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
意思是:匹配&
并打印模式空间。