加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

使用awk或sed在页眉和页脚之间获取文本,但不包括页眉和页脚

发布时间:2020-12-14 00:01:45 所属栏目:Linux 来源:网络整理
导读:假设我有一个文件myfile.txt,其中包含以下内容: 12345678startstuffstop9871 我想获取标题’start’和页脚’stop’之间的数据,但不包括这些边框(所以在这种情况下,我的结果只是行’stuff’).使用awk和sed,我尝试了以下方法: awk '/start/ { show=1 } show;
假设我有一个文件myfile.txt,其中包含以下内容:

1234
5678
start
stuff
stop
9871

我想获取标题’start’和页脚’stop’之间的数据,但不包括这些边框(所以在这种情况下,我的结果只是行’stuff’).使用awk和sed,我尝试了以下方法:

awk '/start/ { show=1 } show; /stop/ { show=0 }' myfile.txt
 sed -n '/start/,/stop/p' myfile.txt

但这些包括输出中的页眉和页脚.我怎么能这样做,以便我不保留标题和脚 – 但只有中间的信息?

解决方法

只需颠倒测试的顺序:

$awk '/stop/{show=0} show; /start/ { show=1 }' myfile.txt
stuff

这个怎么运作

> / stop / {show = 0}

每当我们遇到与正则表达式匹配的行时,我们将变量show设置为0(false).
>显示;

如果show为true,则打印该行.

更详细地说,show是一个条件,意味着它被评估,如果是,则执行一个动作.由于我们没有明确指定操作,因此执行默认操作,即打印$0.

由于没有明确指定任何操作,我们需要按照show with;为了将它与下一个命令分开.
> / start / {show = 1}

每当我们遇到与正则表达式开始匹配的行时,我们将变量show设置为1(true).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读