GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So ändern Sie ein Wort in einer Datei mit einem Linux-Shell-Skript

Sie könnten sed:

verwenden
sed -i 's/MyCar on/MyCar off/' path/to/file

Sie können dies nur mit Shell tun. Dieses Beispiel verwendet eine unnötige case-Anweisung für dieses spezielle Beispiel, aber ich habe sie eingefügt, um zu zeigen, wie Sie mehrere Ersetzungen integrieren können. Obwohl der Code größer als ein sed 1-Liner ist, ist er normalerweise viel schneller, da er nur Shell-Builts verwendet (bis zu 20x für kleine Dateien).

REPLACEOLD="old"
WITHNEW="new"
FILE="tmpfile"
OUTPUT=""
while read LINE || [ "$LINE" ]; do
    case "$LINE" in
        *${REPLACEOLD}*)OUTPUT="${OUTPUT}${LINE//$REPLACEOLD/$WITHNEW}
";;
        *)OUTPUT="${OUTPUT}${LINE}
";;
    esac
done < "${FILE}"
printf "${OUTPUT}" > "${FILE}"

für den einfachen Fall könnte man die case-Anweisung weglassen:

while read LINE || [ "$LINE" ]; do
    OUTPUT="${OUTPUT}${LINE//$REPLACEOLD/$WITHNEW}
"; done < "${FILE}"
printf "${OUTPUT}" > "${FILE}"

Hinweis:die ...|| [ "$LINE" ]... Bit soll verhindern, dass die letzte Zeile einer Datei verloren geht, die nicht mit einer neuen Zeile endet (jetzt kennen Sie mindestens einen Grund, warum Ihr Texteditor diese immer hinzufügt)


Linux
  1. So zeigen oder ändern Sie die ACL in Linux-Dateien

  2. So ändern Sie die Standard-Shell in Linux

  3. So führen Sie ein Shell-Skript beim Start aus

  4. Shell-Skript ändert Verzeichnis mit Variable

  5. Templating mit Linux in einem Shell-Skript?

So führen Sie Shell-Skript als Systemd-Dienst in Linux aus

Chmod-Befehl – ​​So ändern Sie Dateiberechtigungen in Linux

So ändern Sie das Limit für offene Dateien in Linux

So speichern Sie einen Linux-Befehl als Variable im Shell-Skript

So ändern Sie die Standard-Shell im Linux-System

So ändern Sie eine Benutzer-Shell in Linux