Antworten:
Wenn Sie mit einer Teilzeichenfolge der gesamten Zeile übereinstimmen, können Sie entweder den s
Befehl sed mit einem regulären Ausdruck verwenden, um den Rest der Zeile zu entfernen:
sed -i 's/^.*foo.*$/another string/' myfile.txt
Oder verwenden Sie den c
Befehl, um die übereinstimmende Zeile auf einmal zu ersetzen:
sed -i '/foo/ { c \
another string
}' myfile.txt
Wenn Sie an der Eingabeaufforderung keine mehrzeiligen Befehle eingeben möchten, können Sie diese stattdessen in ein Skript einfügen:
$ cat foo.sed
/foo/ { c \
another string
}
$ sed -i -f foo.sed myfile.txt
}'
in einer separaten Zeile von befindet another string
: Das Ersetzen ist alles in dieser zweiten Zeile, einschließlich des, }
wenn Sie es dort ablegen.
Sie können die Inplace- Funktionalität von sed verwenden :
sed -i -e 's/foo/bar/' myfile.txt
foo
mit bar
nicht der ganzen Zeile ..