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

Bash-Skript fügt Text an die erste Zeile einer Datei an

Dieses sed Befehl fügt 123 hinzu bis zum Ende der ersten Zeile Ihrer Datei.

sed ' 1 s/.*/&123/' yourfile.txt

auch

sed '1 s/$/ 123/' yourfile.txt

Um das Ergebnis an dieselbe Datei anzuhängen, müssen Sie -i verwenden Schalter :

sed -i ' 1 s/.*/&123/' yourfile.txt

Dies ist eine Lösung, um "ok" in der ersten Zeile von /etc/passwd hinzuzufügen , ich denke, Sie können dies mit ein wenig "Tuning" in Ihrem Skript verwenden :

$ awk 'NR==1{printf "%s %s\n", $0, "ok"}' /etc/passwd
root:x:0:0:root:/root:/bin/bash ok

Zum Bearbeiten eine Datei, können Sie ed verwenden , der Standardeditor:

line=' bcm2708.w1_gpio_pin=20'
file=/boot/cmdline.txt
if ! grep -q -x -F -e "$line" <"$file"; then
    ed -s "$file" < <(printf '%s\n' 1 a "$line" . 1,2j w q)
fi

ed Befehle von :

  • 1 :Gehe zu Zeile 1
  • a :anhängen (dies wird nach der aktuellen Zeile eingefügt)
  • Wir befinden uns im Einfügemodus und fügen die Erweiterung von $line ein
  • . :Einfügemodus stoppen
  • 1,2j Verbinde die Linien 1 und 2
  • w :schreiben
  • q :beenden

Linux
  1. Den übereinstimmenden Text an die Zeile anhängen?

  2. Wie füge ich Text an eine Datei an?

  3. Holen Sie sich eine bestimmte Zeile aus einer Textdatei, indem Sie nur ein Shell-Skript verwenden

  4. Zeile mit Shell-Skript an die Datei /etc/hosts anhängen

  5. Wie füge ich mit sed Text in die erste Zeile einer Datei ein?

So lesen Sie eine Datei Zeile für Zeile in Bash

Bash:An Datei anhängen

Ersetzen von Zeichenfolgen in Bash

35 Bash-Skriptbeispiele

Bash-Skript zum Zentrieren von Fortune/Text von Stdin/Pipe?

Löschen Sie Leerzeichen in jedem Zeilenanfang der Datei mit bash