如何在bash sed命令中使用变量,具体示例

时间:2018-08-14 16:27:48

标签: linux bash sed

我想将文件的一部分复制到新文件中。 如果我使用:

sed -n '1641,1804p' oldfile.txt > newfile.txt

工作正常。但是我想用变量替换谨慎的数字1641和1804,以便可以将此代码用于不同大小的文件。所以我可以改用变量:

$start=1641
$end=1804

然后我想将这些变量传递给sed。我使用以下方法,但它似乎不起作用:

sed-n "$start,$endp" oldfile.txt > newfile.txt

请帮助!

3 个答案:

答案 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