Pet*_*ete 8 regex perl awk sed
如何在文件开头显示数据直到第一次出现正则表达式?
例如,如果我有一个包含以下内容的文件:
One
Two
Three
Bravo
Four
Five
Run Code Online (Sandbox Code Playgroud)
我想开始显示从第1行开始的文件内容,并在找到字符串"B*"时停止.所以输出应该如下所示:
One
Two
Three
Run Code Online (Sandbox Code Playgroud)
rjh*_*rjh 11
perl -pe 'last if /^B/' source.txt
解释:-p开关在代码周围添加一个循环,将其转换为:
while ( <> ) { last if /^B.*/; # The bit we provide print; }
如果条件成立,则最后一个关键字立即退出周围的循环 - 在这种情况下,/ ^ B /,表示该行以B开头.
如果它从文件的开头
awk '/^B/{exit}1' file
Run Code Online (Sandbox Code Playgroud)
如果你想从特定的行号开始
awk '/^B/{exit}NR>=10' file # start from line 10
Run Code Online (Sandbox Code Playgroud)
sed -n '1,/^B/p'
Run Code Online (Sandbox Code Playgroud)
从第1行打印到/ ^ B /(含). -n抑制默认回声.
更新: Opps ....不想要"Bravo",所以需要反向行动;-)
sed -n '/^B/,$!p'
Run Code Online (Sandbox Code Playgroud)
/ I3az /
sed '/^B/,$d'
Run Code Online (Sandbox Code Playgroud)
阅读如下:删除(d
)以第一行开头的所有行,以"B"(/^B/
)开头,向上,直到最后一行($
).