簡單:
sed '1{x;d};$H;/regexp/{x;s/^/\n/;b};x'
形容它
#!/bin/sed
# trick is juggling previous and current line in hold and pattern space
1 { # at firs line
x # place first line to hold space
d # skip to end and avoid printing
}
$H # append last line to hold space to force print
/regexp/ { # regexp found (in current line - pattern space)
x # swap previous and current line between hold and pattern space
s/^/\n/ # prepend line break before previous line
b # jump at end of script which cause print previous line
}
x # if regexp does not match just swap previous and current line to print previous one
編輯:點點簡單的版本。
sed '$H;/regexp/{x;s/^/\n/;b};x;1d'
即插入模式下面兩條新線... – Dennis 2009-04-16 19:01:23
是啊,這就是我說的:-) – lothar 2009-04-16 19:07:44
謝謝,我會編輯我的問題,包括Python和Perl代碼(我知道一點的Python和沒有Perl,所以不幸我仍然陷入困境。) – Dennis 2009-04-16 20:20:34