为了账号安全,请及时绑定邮箱和手机立即绑定

如何对模式后的内容进行grep?

如何对模式后的内容进行grep?

一只萌萌小番薯 2019-12-19 18:14:56
如何对模式后的内容进行grep?例如,给定一个文件:potato: 1234 apple: 5678 potato: 5432 grape: 4567 banana: 5432 sushi: 56789我想为所有以potato:但只需列出下面的数字potato:..所以在上面的例子中,输出是:1234 5432我怎么能这么做?
查看完整描述

3 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

grep 'potato:' file.txt | sed 's/^.*: //'

grep 'potato:' file.txt | cut -d\   -f2

grep 'potato:' file.txt | awk '{print $2}'

grep 'potato:' file.txt | perl -e 'for(<>){s/^.*: //;print}'

awk '{if(/potato:/) print $2}' < file.txt

perl -e 'for(<>){/potato:/ && s/^.*: // && print}' < file.txt



查看完整回答
反对 回复 2019-12-20
?
开满天机

TA贡献1786条经验 获得超12个赞

sed -n 's/^potato:[[:space:]]*//p' file.txt

人们可以认为grep是一个受限的SED,或者SED是一个广义的grep。在这种情况下,SED是一个很好的、轻量级的工具,可以做你想做的事情-当然,还有其他一些合理的方法来实现它。


查看完整回答
反对 回复 2019-12-20
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

这将在每一次匹配之后打印所有内容,只在同一行上:

perl -lne 'print $1 if /^potato:\s*(.*)/' file.txt

这样做也是一样的,但也会打印后续的所有行:

perl -lne 'if ($found){print} elsif (/^potato:\s*(.*)/){print $1; $found++}' file.txt

使用以下命令行选项:

  • -n

    在输入文件的每一行周围循环。
  • -l

    在处理之前移除换行符,然后将它们添加回
  • -e

    执行perl代码



查看完整回答
反对 回复 2019-12-20
  • 3 回答
  • 0 关注
  • 434 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信