繁体   English   中英

在grep结果上调用sed-Linux Shell脚本/文本处理

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM