Sed auf einer Linie Grund funktioniert und a,b{action}
werden Maßnahmen für die Linien laufen passende a
bis Linien b
entsprechen. In Ihrem Fall
sed -n '/aaa/,/ccc/p'
werden Drucklinien beginnen, wenn /aaa/
abgestimmt ist, und stoppt, wenn /ccc/
abgestimmt ist, das ist nicht das, was Sie wollen.
Um eine Linie dort zu manipulieren ist mehrfach Optionen, ist s/search/replace/
, die verwendet werden können, um die aaa
und ccc
nachlauf führende zu entfernen:
% sed 's/^aaa\|ccc$//g' /tmp/test
bbb
Aufteilung:
s/
^aaa # Match literal aaa in beginning of string
\| # ... or ...
ccc$ # Match literal ccc at the end of the sting
// # Replace with nothing
g # Global (Do until there is no more matches, normally when a match is
# found and replacement is made this command stops replacing)
Wenn Sie nicht sicher sind, wie viele a
's und c
' s Sie haben, können Sie verwenden:
% sed 's/^aa*\|cc*$//g' /tmp/test
bbb
Welche entspricht Literal a
gefolgt von null oder mehr a
's am Anfang der Zeile. Das gleiche gilt für die c
aber nur am Ende.