簡體   English   中英

如何在bash sed命令中使用變量,具體示例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM