微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

读两个关键字之间的线

有人可以build议如果我必须阅读两个关键字之间做什么

*System_Power 1 1.2 1.8 2 *System_Terminate

在这种情况下,asnwer会是

1 1.2 1.8 2

我尝试使用awk

awk '$0 =="*System_Power" # start printing when 1st field is *System_Power $0 != "*System_Terminate"{ # until reach the *System_Terminate print; } ' powerSummary > reportedFailure.k # Read from file powerSummary and pipe to reportedFailure.k exit

上面的数据在powerSummary文件的中间。

如何获得bashvariables在awkpipe道上工作

如何在上下文之后设置grep为“直到下一个空行”?

文件bash中查找给定值的最接近的值

在特定列中查找并replace破折号

分割CSV文件并使用bash,sed或awk排除输出中的列

我会感谢你的更正。

复制每个目录中的png,如果png> 600×600?

从shell脚本运行awk文件,而不指定awk的确切位置

在unix中列出文件并将输出保存在一个variables中(最早的文件获取特定的扩展名)

AWK中的多分裂

如何在vi编辑器或linux中find并删除两个文件中的重复行

这将为你工作:

$ awk '/*System_Power/{f=1;next}/*System_Terminate/{f=0}f' infile 1 1.2 1.8 2

您可以使用sed来简单地选择两个匹配行之间的文本,但是这也会包含匹配行本身…所以我们明确地删除这些行:

sed -n '/System_Power/,/System_Terminate/ { /^*/ d p }' < input

Awk也可以选择匹配行之间的文本:

awk '/System_Power/,/System_Terminate/ {print}' < input

…但像sed这将包括开始/结束终止。 你可以用awk解决这个问题,但是我认为你可以用sed获得一个更清晰的解决方案。

这是另外一个

awk '$1=="*System_Power",$1=="*System_Terminate" {if (!/System*/) print}' in.txt

这可能适合你:

sed '/^*System_Power/,/^*System_Terminate/!d;//d' file

或这个:

awk '/^*System_Terminate/{p=0};p;/^*System_Power/{p=1}' file

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐