希望你在這段時間一切順利。問題是我想評論我的 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
明確地知道它不是任何保留字元序列的一部分。