linux打印匹配的行到文件,linux – 逐行读取并逐行打印匹配

我是

shell脚本的新手,如果我能从下面的问题中得到一些帮助,那就太棒了.

我想逐行读取文本文件,并将该行中所有匹配的模式打印到新文本文件中的一行.

例如:

$cat input.txt

SYSTEM ERROR: EU-1C0A Report error -- SYSTEM ERROR: TM-0401 DEFAULT Test error

SYSTEM ERROR: MG-7688 DEFAULT error -- SYSTEM ERROR: DN-0A00 Error while getting object -- ERROR: DN-0A52 DEFAULT Error -- ERROR: MG-3218 error occured in HSSL

SYSTEM ERROR: DN-0A00 Error while getting object -- ERROR: DN-0A52 DEFAULT Error

SYSTEM ERROR: EU-1C0A error Failed to fill in test report -- ERROR: MG-7688

预期输出如下:

$cat output.txt

EU-1C0A TM-0401

MG-7688 DN-0A00 DN-0A52 MG-3218

DN-0A00 DN-0A52

EU-1C0A MG-7688

我尝试了以下代码:

while read p; do

grep -o '[A-Z]\{2\}-[A-Z0-9]\{4\}' | xargs

done < input.txt > output.txt

产生了这个输出:

EU-1C0A TM-0401 MG-7688 DN-0A00 DN-0A52 MG-3218 DN-0A00 DN-0A52 EU-1C0A MG-7688 .......

然后我也尝试了这个:

while read p; do

grep -o '[A-Z]\{2\}-[A-Z0-9]\{4\}' | xargs > output.txt

done < input.txt

但没有帮助:(

也许有另一种方式,我愿意接受awk / sed / cut或者其他……

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值