Sed

sed 使用 -i 標誌就地修改

  • September 21, 2022

我是新手GNU sed(在 macOS 上執行)並希望縮短一些文件頭(~50 K 頭,78.3 Mb)。

我正在嘗試通過指定帶有-i標誌的備份副檔名來修改 FASTA 文件。

到目前為止我有

sed -i.bak 's/^([^|]+).[^|]+(.*)/\1\2/' file.fas 

這應該創建一個名為file.fas.bak.

但是,我收到了錯誤

sed: 1: "s/^([^|]+).[^|]+(.*)/\1\2/": \1 not defined in the RE

注意sed -re 's/^([^|]+).[^|]+(.*)/\1\2/' file.fas正確列印到螢幕。

在這種情況下如何列印到備份文件有什麼想法嗎?

您還必須指定該-r選項,以啟用擴展正則表達式語法的解釋(但請注意-E它比它更可移植-r並且很快將取代它),因此您應該使用

sed -E -i.bak 's/^([^|]+).[^|]+(.*)/\1\2/' file.fas

或者,求助於基本的正則表達式:

sed -i.bak 's/^\([^|]\{1,\}\).[^|]\{1,\}\(.*\)/\1\2/' file.fas

引用自:https://unix.stackexchange.com/questions/718099