我正在尝试使用我在此处找到的代码:Insert contents of a file after specific pattern match
但是,当我在代码中添加反斜杠时,它不起作用。那么,我按照此处的说明操作:Slash and backslash in sed更改sed
中的分隔符。但是,当我这样做时,插入(应该是几行)变成数千个。
这是我的尝试:
sed ':<\tag>: r file1.txt' file2.txt
示例:
FILE1.TXT
Hello World 1
Hello World 2
FILE2.TXT:
<thanks>
<tag>
<example>
<new>
<\new>
<\example>
<\tag>
<\thanks>
期望的输出:
<thanks>
<tag>
<example>
<new>
<\new>
<\example>
<\tag>
Hello World 1
Hello World 2
<\thanks>
如果你能帮助我在线路匹配后插入文件内容,同时逃避反斜杠,我真的很感激。
答案 0 :(得分:2)
试试这个
sed '/<\\tag>/r file2' file1
我认为您交换了file1和file2。
答案 1 :(得分:1)
尝试一次跟随awk。
awk '/<\\tag>/{print;system("cat File2.txt");next} 1' File.txt > temp_file && mv temp_file File.text
要将输出保存到File.txt本身,可能会对您有所帮助。
DB.extend_datasets{def supports_timestamp_usecs?; false end}
答案 2 :(得分:1)
与您的其他问题相同(请参阅https://stackoverflow.com/a/46720002/1745001),只需在目标行之前而不是在目标行之前打印新记录:
awk 'FNR==NR{n=n ORS $0; next} /<\\tag>/{$0=$0 n} 1' file1 file2
我强烈推荐Arnold Robbins撰写的Effective Awk Programming,第4版。