Bash 我想在shell脚本的sed-f命令中使用变量
我正在使用这个命令将某一行从一个文件复制到另一个文件。它工作正常。没有问题Bash 我想在shell脚本的sed-f命令中使用变量,bash,shell,sed,Bash,Shell,Sed,我正在使用这个命令将某一行从一个文件复制到另一个文件。它工作正常。没有问题 sed -f <(sed -e '1,10d; 12,$d; x; s/.*/10a\\/;p; x' ../log/file2.txt ) ../log/file4.txt > ../log/file5.txt sed-f../log/file5.txt 问题不是10,而是使用变量VAR1(其中VAR1=10)。 $VAR1不起作用 我试过这个命令 sed -f <(sed -e '1,$VAR1
sed -f <(sed -e '1,10d; 12,$d; x; s/.*/10a\\/;p; x' ../log/file2.txt ) ../log/file4.txt > ../log/file5.txt
sed-f../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
sed-f../log/file5.txt
请帮帮我。试试双qoutes和花括号:
sed -f <(sed -e "1,${VAR1}d; 12,\$d; x; s/.*/10a\\\\/;p; x" ../log/file2.txt ) ../log/file4.txt > ../log/file5.txt
sed-f../log/file5.txt
试试双尖括号和大括号:
sed -f <(sed -e "1,${VAR1}d; 12,\$d; x; s/.*/10a\\\\/;p; x" ../log/file2.txt ) ../log/file4.txt > ../log/file5.txt
sed-f../log/file5.txt
首先,使用双引号。它将使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
sed-f../log/file5.txt
首先,使用双引号。它将使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
sed-f../log/file5.txt
我更喜欢单引号和双引号的组合:
sed -f <(sed -e '1,'"$VAR1"'d; 12,$d; x; s/.*/10a\\/;p; x' ../log/file2.txt ) ../log/file4.txt > ../log/file5.txt
sed-f../log/file5.txt
我更喜欢单引号和双引号的组合:
sed -f <(sed -e '1,'"$VAR1"'d; 12,$d; x; s/.*/10a\\/;p; x' ../log/file2.txt ) ../log/file4.txt > ../log/file5.txt
sed-f../log/file5.txt
大括号是个好主意,尽管问题出在单引号上。双引号确实可以扩展变量。@fedorqui需要大括号来分隔变量名和命令。Antigluk是对的-我忘记了双反斜杠的额外双转义(现在已更正)@Matthias哦,你是对的,否则它会像VAR1d
variableColly大括号一样是个好主意,虽然问题是单引号。双引号确实可以扩展变量。@fedorqui需要大括号来分隔变量名和命令。Antigluk是对的-我忘记了双反斜杠的额外双转义(现在已更正)@Matthias哦,你是对的,否则在替换为双引号后,VAR1d
variablea,显示此错误参见我的答案:避开反斜杠和美元替换为双引号后,显示此错误参见我的答案:避开反斜杠和美元