我可以用两种不同的方式阅读这个问题,要么回显两个标记之间的线,要么只输出多种类型的线.
如果你想要和(例如)之间 的线,你可以使用"echo"变量:Start
End
awk
echo 'Start ---abcxyz
something goes here
and here
End ---- efg123
Ref ----2345
Slack---- lmnop' | awk '
/^Start / { e = 1 }
{ if (e) { print } }
/^End / { e = 0 }
'
Run Code Online (Sandbox Code Playgroud)
输出是:
Start ---abcxyz
something goes here
and here
End ---- efg123
Run Code Online (Sandbox Code Playgroud)
echo变量e
最初未设置,因此if
语句永远不会触发.每当awk
看到一行开头时Start
,它都会将echo变量设置为true.在这种情况下,所有行都将从该点开始回显.
然后,当awk
看到以...开头的行时End
,它会将echo标志设置回false,从而阻止进一步输出.
三个awk
命令的顺序可用于决定是否也打印起始行和结束行.例如,如果你不想要它们,你可以交换第一个和第三个命令(开始和结束命令):
echo 'Start ---abcxyz
something goes here
and here
End ---- efg123
Ref ----2345
Slack---- lmnop' | awk '
/^End / { e = 0 }
{ if (e) { print } }
/^Start / { e = 1 }
'
Run Code Online (Sandbox Code Playgroud)
输出是:
something goes here
and here
Run Code Online (Sandbox Code Playgroud)
如果你只是想要开始,结束和松弛的线条,grep
那么这样做非常简单:
echo 'Start ---abcxyz
something goes here
and here
End ---- efg123
Ref ----2345
Slack---- lmnop' | egrep '^Start |^End |^Slack'
Run Code Online (Sandbox Code Playgroud)
输出是:
Start ---abcxyz
End ---- efg123
Slack---- lmnop
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
203 次 |
最近记录: |