我试图读取文件 test.txt 的内容并写入另一个文件 Report.html,仅在字符串的第一个匹配项中。像这样的东西:
sed -i '/, past/r test.txt' Report.html
上面的命令读取所有字符串“, past”,并在所有字符串“, past”中包含 test.txt 的内容。但我只想在第一次出现的字符串“, past”中包含它。像这样的命令:
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
将对每一 行进行包含。
关于regex - Shell 脚本 Sed - 如何仅在第一次出现字符串时读取文件并写入另一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34025547/