我想将文件的一部分复制到新文件中。 如果我使用:
sed -n '1641,1804p' oldfile.txt > newfile.txt
工作正常。但是我想用变量替换谨慎的数字1641和1804,以便可以将此代码用于不同大小的文件。所以我可以改用变量:
$start=1641
$end=1804
然后我想将这些变量传递给sed。我使用以下方法,但它似乎不起作用:
sed-n "$start,$endp" oldfile.txt > newfile.txt
请帮助!
答案 0 :(得分:1)
编写sed -n "$start,$endp"
时,解释器认为您要访问变量endp
。您可以使用花括号将其修复,例如:
sed -n "${start},${end}p" oldfile.txt > newfile.txt
答案 1 :(得分:1)
分配变量时,在变量前面有“ $”,这是不正确的。
要使用与文本串联的shell变量,或者使用大括号将变量括起来,以便shell知道变量的结尾。在您的示例中,shell正在寻找不存在的变量$endp
。
start=1641
end=1804
sed -n "${start},${end}p" oldfile.txt > newfile.txt
答案 2 :(得分:1)
只需如下使用:-
sed 's|'"$start"'|'"$end"'|g' oldfile.txt > newfile.txt