如果我的文件名为some_file,内容如下:
first line
second line
third line
和内部脚本:
VAR1="first line\nsecond line\nthird line"
VAR2="`cat some_file`"
我希望VAR1和VAR2相同,但根据sed显然并非如此:
sed "s/^a/${VAR1}/" some_another_file # this is OK
sed "s/^a/${VAR2}/" some_another_file # this fail with syntactic error
我认为换行表示在某种程度上是不同的,但我找不到任何方法如何使VAR2等于VAR1。
提前致谢
答案 0 :(得分:4)
这将读入文件并用其内容替换该行:
sed -e '/^a/{r some_file' -e 'd}' some_another_file
答案 1 :(得分:2)
将VAR1更改为:
VAR1=$(echo -e "first line\nsecond line\nthird line")
然后测试它们:
$ [ "$VAR1" == "$VAR2" ] && echo equal
equal
更新
要使sed工作,请更改VAR2,使其具有“\ n”而不是换行符。
VAR2=$(sed ':a;N;$!ba;s/\n/\\n/g' some_file)
sed "s/^a/${VAR2}/" file