用於註解和取消註解行的 Bash 腳本

用於註解和取消註解行的 Bash 腳本

希望你在這段時間一切順利。問題是我想評論我的 txt 檔案中的一些行。我有一個程式碼可以註解和取消註解多行,但是我不知道如何取得公司名稱。我的文字檔有這個方案:lunar_static KKK_<countryname>_NUM 08.00.name

lunar_static KKK_USA_NUM 08.00.Winter
lunar_static KKK_ITALY_NUM 08.Winter
lunar_static KKK_ITALY_NUM 08.00.Spring
lunar_static KKK_ITALY_NUM 08.00.Autumn
lunar_static KKK_SPAIN_NUM 08.00.Winter
lunar_static KKK_SPAIN_NUM 08.00.Spring
lunar_static KKK_FRANCE_NUM 08.00.Autumn
lunar_static KKK_FRANCE_NUM 08.00.Autumn
lunar_static KKK_ITALY_NUM 08.00.Ferari-taxi
lunar_static KKK_ITALY_NUM "/^08\\.00\\.Delta\\ M$/"
lunar_static KKK_ROMANIA_NUM "/^08\\.00\\.Delta\\ M$/"
lunar_static KKK_ITALY_NUM "/^08\\.00\\.Red\\_Park$/"

我想用 Autumn、Ferari-taxi、Delta M、Red_Park 來評論義大利。我知道如何用 sed 評論幾個名字

sed -i '/Winter\|Spring/s/^/#/' file2.txt

並取消註釋

sed -i '/Spring/s/^#//' file2.txt

但它會選擇所有名稱,而不考慮國家/地區名稱。不知道怎麼去國家。預期產出

    lunar_static KKK_USA_NUM 08.00.Winter
    lunar_static KKK_ITALY_NUM 08.Winter
    lunar_static KKK_ITALY_NUM 08.00.Spring
    #lunar_static KKK_ITALY_NUM 08.00.Autumn
    lunar_static KKK_SPAIN_NUM 08.00.Winter
    lunar_static KKK_SPAIN_NUM 08.00.Spring
    lunar_static KKK_FRANCE_NUM 08.00.Autumn
    lunar_static KKK_FRANCE_NUM 08.00.Autumn
    #lunar_static KKK_ITALY_NUM 08.00.Ferari-taxi
    #lunar_static KKK_ITALY_NUM "/^08\\.00\\.Delta\\ M$/"
    lunar_static KKK_ROMANIA_NUM "/^08\\.00\\.Delta\\ M$/"
    #lunar_static KKK_ITALY_NUM "/^08\\.00\\.Red\\_Park$/"

我很高興收到每一個建議。謝謝你!

答案1

您需要在搜尋ITALY詞中包含您的目標國家/地區,對備選方案進行分組並允許兩個搜尋字詞(Autumn|Delta....)之間的字符.*

sed -E '/ITALY.*(Autumn|Delta.. M|Red.._Park|Ferari-taxi)/s/^/#/' file1

\這是為了避免逃脫而進行的輕微作弊

sed -E '/ITALY.*(Autumn|Delta\\\\ M|Red\\\\_Park|Ferari-taxi)/s/^/#/' file1

-i透過包含 in place標誌來在同一文件中進行更改sed

sed -i -E .....

編輯您可以將此作為另一個問題發布,但是...

“…是否可以在\\不輸入\\\\sed 的情況下找到單字 ?…”換句話說,沒有逃跑他們。

不,原因是這裡

'\' 字元後面跟著某些普通字元時,具有特殊意義

因此,在您的匹配字串中,如果 後面的字符\是形成保留配對之一(例如\+, \?, \n)的字符,您如何sed知道您正在查找文字\n還是換行符?

因此,每個\要按字面意思讀取的字元都必須進行轉義,以sed明確地知道它不是任何保留字元序列的一部分。

相關內容