[英]Invoking sed on grep results - linux shell script / text processing
在grep结果上调用sed并将其保存到文件的最佳方法是什么? 我想更改文本文件中的某些行,例如
嗨{汤姆·玛丽·安迪}
什么{埃里克·约翰·特德}
嗨{杰里·凯蒂·马克}
因此,我的问题是,我想在例如“ Hi”行的方括号{}之间包含的所有名称之前添加例如字母T。并覆盖文件。 结果应如下所示:
嗨,{T.Tom T.Mary T.Andy}
什么{埃里克·约翰·特德}
嗨{T.Jerry T.Katy T.Mark}
您认为最佳的解决方案/命令是什么? 我将编写shell脚本来做到这一点。 我知道我可以grep该行,以后将其更改为array和concat,但我认为这不是一个很好的解决方案:)感谢您的帮助。
如果你有:
Hi { Tom Mary Andy }
What { Eric John Ted }
Hi { Jerry Katy Mark }
并想插入一个'T.'
在以'Hi
”开头的大写字母之前,获得:
Hi { T.Tom T.Mary T.Andy }
What { Eric John Ted }
Hi { T.Jerry T.Katy T.Mark }
然后,您可以单独使用sed
。 要在适当位置编辑文件,请对sed
使用'-i'
选项:
sed -i '/^Hi/s/\s\([A-Z]\)/ T.\1/g' filename.txt
注意:要创建原始文件的备份,请使用sed -i.bak
如果您使用的是不带'-i'
选项的sed
的mac或其他操作系统,则可以使用:
sed '/^Hi/s/\s\([A-Z]\)/ T.\1/g' < filename.txt > newfilename.txt
结果在newfilename.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.