it-swarm.com.de

Wie füge ich Text nach einer bestimmten Zeichenfolge in eine Datei ein?

Im Moment benutze ich echo "Hello World" >> file.txt um Text an eine Datei anzuhängen, aber ich muss auch Text unter einer bestimmten Zeichenfolge hinzufügen, sagen wir "[Option]", ist das mit sed möglich?

Z.B:

Eingabedatei

Some text
Random
[option]
Some stuff

Ausgabedatei

Some text
Random
[option]
*inserted text*
Some stuff
78

Zeile nach dem Match anhängen

  • sed '/\[option\]/a Hello World' input

Zeile vor dem Match einfügen

  • sed '/\[option\]/i Hello World' input

Zusätzlich können Sie die Eingabedatei sichern und bearbeiten, indem Sie die Option -i.bkp Zu sed verwenden

113
Rahul Patil

Ja, es ist möglich mit sed:

sed '/pattern/a some text here' filename

Ein Beispiel:

$ cat test
foo
bar
option
baz
$ sed '/option/a insert text here' test
foo
bar
option
insert text here
baz
$
36
devnull

Mit awk:

awk '1;/PATTERN/{ print "add one line"; print "\\and one more"}' infile

Denken Sie daran, dass einige Zeichen nicht wörtlich eingefügt werden können, daher muss Escape-Sequenzen (sie beginnen mit einem Backslash) verwendet werden, z. Um einen wörtlichen Backslash zu drucken, muss man \\ schreiben.

Bei sed ist es tatsächlich dasselbe, aber zusätzlich muss jeder eingebetteten neuen Zeile im Text ein Backslash vorangestellt werden:

sed '/PATTERN/a\
add one line\
\\and one more' infile

Weitere Einzelheiten zu Escape-Sequenzen finden Sie im Handbuch.

6
don_crissti