2016-05-29 3 views

Antwort

3

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.

Verwandte Themen