繁体   English   中英

Shell脚本Sed-仅在首次出现字符串时,如何读取文件并在另一个文件中写入?

[英]Shell script Sed - How to read a file and write in another file only in the first occurrence of a string?

我正在尝试读取文件test.txt的内容,并仅在字符串的第一个匹配项中写入另一个文件Report.html。 就像是:

sed -i '/, past/r test.txt' Report.html

上面的命令读取所有字符串“过去”,并在所有字符串“过去”中包含test.txt的内容。 但我只想在字符串“,过去”的首次出现中包含该字符串。 像这样的命令:

sed -i '0,/, past/r test.txt' Report.html

上面的命令不起作用,正确的语法是什么?

由于sed r命令的范围不大,并且sed控件不允许“仅第一”,因此我认为您需要“计算”感兴趣的行号并输入要sed的行:

sed -i $(awk '/, past/{print NR;exit}' Report.html)'r test.txt' Report.html

只有做到这一点,如果你保证 , past在Report.html发生的地方。 如果不是,请将$(awk...)结果存储在变量中,然后首先检查它。 否则, sed将对每一行进行包含。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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