Wie genau erstelle ich ein Sed-Skript und verwende es zum Bearbeiten einer Datei?

Wie genau erstelle ich ein Sed-Skript und verwende es zum Bearbeiten einer Datei?

Ich weiß, wie man eine Datei mit sed Schritt für Schritt bearbeitet, aber wie erstelle ich ein echtes sed-Skript und verwende es dann auf der Datei, um dieselben Dinge zu tun, die die einzelnen sed-Befehle tun würden? Zum Beispiel diese 3 sed-Befehle:

sed -i '4i\ ' baconDatei

sed -i 's/,/\t\t/' baconDatei

sed -i 's/,/ /' baconDatei

Antwort1

Befehle in eine Datei einfügen

Fügen Sie diese Zeilen in eine Skriptdatei mit dem Namen ein script.sed.

4i\ 
s/,/\t\t/
s/,/ /

Führen Sie es dann wie folgt aus:

$ sed -i -f script.sed baconFile

Erstellen eines eigenständigen Sed-Skripts

wenn Sie eine einzelne ausführbare Datei wünschen, gehen Sie wie folgt vor:

#/bin/bash

sed -i '
4i\ 
s/,/\t\t/
s/,/ /
' "$@"

Fügen Sie die obigen Zeilen in eine Datei namens ein script.bash, machen Sie sie ausführbar ( chmod +x script.bashund führen Sie sie wie folgt aus:

$ script.bash baconFile

Erstellen der Skriptdatei

Mit dieser Methode können Sie die oben erwähnte Datei erstellen.

$ cat > script.bash <<EOF
#!/bin/bash

4i\ 
s/,/\t\t/
s/,/ /
EOF

Dadurch wird die Skriptdatei erstellt. Sie können dies mit diesem Befehl bestätigen:

$ cat script.bash
#!/bin/bash

4i\ 
s/,/\t\t/
s/,/ /

Antwort2

sed -i '4i\ 

s/,/\t\t/

s/,/ /' baconFile

sed funktioniert wie die meisten Interpreter, mehrere Befehle können in separaten Zeilen stehen oder durch getrennt sein ;. Wenn Sie dies in der ersten Zeile nicht tun, GNU sedkann dies zu einem Fehler führen.


Um ein Sed-Skript zu erstellen, geben Sie in Ihrem Shebang einfach den absoluten Pfad zu Ihrem Sed-Interpreter an und stellen Sie sicher, dass die Datei ausführbar ist.

#!/bin/sed -f
s/foo/bar/

chmod u+x foo
./foo <<<foo
bar

oder das Skript könnte zusammen mit dem sed-Befehl aufgerufen werden. sed -i -f foo file

Antwort3

Sie brauchen die -fMöglichkeitsed -f sed-script

Antwort4

Sie können dazu ein Bash- oder Korn-Shell-Skript schreiben. Wenn Sie es dynamisch gestalten möchten, können Sie es so einrichten, dass es einen Dateinamen als Parameter annimmt, und Sie können diese Sed-Befehle für jede gewünschte Datei ausführen.

Erstellen Sie eine neue Datei, sagen wirupdatefile.sh

#!/bin/bash
#$1 is the first parameter being passed when calling the script. The variable filename will be used to refer to this.
filename=$1

sed '4i\ ' filename
sed 's/,/\t\t/' filename
sed 's/,/ /' filename

Sie können dann ausführen updatefile.sh baconFile, wodurch alle drei Sed-Befehle für die Datei ausgeführt werden baconFile.

Außerdem gaktualisiert die Option in sed alle Vorkommen der Variable in der Datei. Beispiel:

sed 's/,/ /g' filename

verwandte Informationen