所以还有其他类似的问题,但这里特别是我想要做的事情 -
我有一个非常长的文件。 long.txt看起来像
line1
line2
line3
line4
line1
line1
line2
line8
line1
line2
现在,我有另一个看起来像
的文件pattern.txtline1
line2
最后,看起来像
的replace.txtnewline1
newline2
有没有办法调用sed,以便在上面运行后,我最终得到
newline1
newline2
line3
line4
line1
newline1
newline2
line8
newline1
newline2
答案 0 :(得分:2)
这可能适合你(GNU sed):
cat <<\! >cat.sed
> :a;$!{N;ba};s/\n/\\n/
> !
sed ':a;$!'"{N;ba};s/$(sed -f cat.sed pattern.txt)/$(sed -f cat.sed replace.txt)/g" long.txt
newline1
newline2
line3
line4
line1
newline1
newline2
line8
newline1
newline2
说明:
sed
脚本构建sed
替换的LHS(模式)和RHS(替换) - cat.sed
sed
文件的long.txt
脚本。答案 1 :(得分:0)
$ paste -d'/' pattern.txt replace.txt | sed 's@.*@s/&/@' >script.sed
$ sed -f script.sed long.txt