Linux
腳本中的 sed 替換錯誤
我正在編寫一個腳本來替換我文件中的部分單詞。我希望將行更改為(文件名的第一部分).fastq.gz
我有
用於歸檔
ls /pathway *.sam | sort | uniq
做 sed -i “s/VFC-00012-02.fastq.gz/ $ {filename}.fastq.gz/g” $ 文件
完畢
執行此腳本後我得到了空白
我想要(文件名為 B (B.extensions))
B.fastq.gz
在文中在 sed 命令之後
我在https://askubuntu.com/questions/1011839/how-do-i-use-file-names-in-a-sed-command的幫助下解決了這個問題
在結束單引號後需要一個空格。否則,shell 將文件名解釋為替換的一部分。
sed -i 's/VFC-00012-02.fastq.gz/$filename.fastq.gz/' "$file"
將變數雙引號是一個很好的做法,這樣它就不會進行分詞。
另一方面,不雙引號變數 ($filename) 意味著它根本不會被擴展,即文件將包含文字美元符號。我不確定這是你想要的。
您可以切換到雙引號來擴展 $filename,但是如果它可以包含 sed 特殊字元,則必須小心,因為 shell 在 sed 看到參數之前擴展變數,因此 sed 不知道字元來自原來是可變的。