Ran*_*han 9 grep sed awk text-processing
zzzzzzzzz
aaaaaaaaa
bbbbbbbbb &
ccccccccc &
ddddddddd
hhhhhhhhh
eeeeeeeee
fffffffff &
ggggggggg &
Run Code Online (Sandbox Code Playgroud)
在上面的线,我想要的是grep/ sed/ awk(任何方法都可以)有行&标志加在它们上面一行。因此,例如所需的输出将如下所示:
aaaaaaaaa
bbbbbbbbb &
ccccccccc &
eeeeeeeee
fffffffff &
ggggggggg &
Run Code Online (Sandbox Code Playgroud)
以下是我在没有运气的情况下尝试过的。
egrep "&" | -b 1 file.txt
Run Code Online (Sandbox Code Playgroud)
Jos*_* R. 19
你可以做:
grep -B 1 '&$' your_file
Run Code Online (Sandbox Code Playgroud)
这将查找以&, remove结尾的行$以匹配其中&任何位置的行。
该-B开关告诉grep到线那场比赛之前来输出“上下文”线。在这种情况下,由于您需要一行上下文,因此需要-B 1.
此开关在 GNU 中可用,grep但不在 POSIX 标准中。
这是一个简单的sed解决方案,在您没有 GNU 的情况下应该会有所帮助grep:
sed -n '/&/!N;/&/p' your_file
Run Code Online (Sandbox Code Playgroud)
这个怎么运作
-n开关抑制了默认的“打印”操作sed/&/!N意思是:如果当前行不包含&,则将下一行附加到模式空间。/&/p意思是:匹配&并打印模式空间。