我正在使用此命令将某行从一个文件复制到另一个文件。它工作正常。没有问题。
sed -f <(sed -e '1,10d; 12,$d; x; s/.*/10a\\/;p; x' ../log/file2.txt ) ../log/file4.txt > ../log/file5.txt
问题是代替10,我想使用变量VAR1(其中var1 = 10)。 $ VAR1无效。
我试过这个命令。
sed -f <(sed -e '1,$VAR1d; 12,$d; x; s/.*/10a\\/;p; x' ../log/file2.txt ) ../log/file4.txt > ../log/file5.txt
请帮帮我。
答案 0 :(得分:3)
首先,使用双引号。它将使BASH能够处理字符串。
接下来,转义反斜杠(甚至那些应该是sed转义符号的反斜杠) - 因为bash也会逃脱它们。
我想它应该是
sed -f <(sed -e "1,${VAR1}d; 12,\$d; x; s/.*/10a\\\\/;p; x" ../log/file2.txt ) ../log/file4.txt > ../log/file5.txt
答案 1 :(得分:2)
尝试双引号和花括号:
答案 2 :(得分:1)
我更喜欢单一和混合的混合双引号:
e.g。你的情况如下:
sed -f <(sed -e '1,'"$VAR1"'d; 12,$d; x; s/.*/10a\\/;p; x' ../log/file2.txt ) ../log/file4.txt > ../log/file5.txt