[英]How to use variables in bash sed command, specific example
我想將文件的一部分復制到新文件。 如果我使用:
sed -n '1641,1804p' oldfile.txt > newfile.txt
工作正常。 但是我想用變量替換謹慎的數字1641和1804,以便可以將此代碼用於不同大小的文件。 所以我可以改用變量:
$start=1641
$end=1804
然后,我想將這些變量傳遞給sed。 我使用以下方法,但它似乎不起作用:
sed-n "$start,$endp" oldfile.txt > newfile.txt
請幫忙!
當您編寫sed -n "$start,$endp"
,解釋器認為您要訪問變量endp
。 您可以使用花括號將其修復,例如:
sed -n "${start},${end}p" oldfile.txt > newfile.txt
分配變量時,變量前面有“ $”,這是不正確的。
要使用與文本串聯的shell變量,或者使用大括號括起來的變量,以便shell知道變量的結尾。 在您的示例中,shell正在尋找不存在的變量$endp
。
start=1641
end=1804
sed -n "${start},${end}p" oldfile.txt > newfile.txt
只需使用如下:
sed 's|'"$start"'|'"$end"'|g' oldfile.txt > newfile.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.