Antworten:
Wenn Sie mit einer Teilzeichenfolge der gesamten Zeile übereinstimmen, können Sie entweder den sBefehl 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 cBefehl, 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
foomit barnicht der ganzen Zeile ..