簡體   English   中英

如何從文件中刪除包含字符串數組中任何一個的行?

[英]How to remove lines containing any one of an array of strings from a file?

我有一個類似的文件:

<string name="app_name">多系統啟動免費版</string>
<string name="newitem">新建</string>
<string name="edit">編輯</string>
<string name="edits">編輯\u0020</string>
<string name="details">詳情</string>
<string name="resize">改變大小</string>
<string name="seticon">設置圖標</string>
<string name="delete">"刪除 \u0020"</string>
<string name="reset">恢復出廠設置</string>
<string name="setdefault">設為默認</string>
<string name="description">多系統啟動免費版</string>
<string name="nodata">沒有發現虛擬系統鏡像!!!</string>

我想從中刪除包含reset newitem details行。 如何制作腳本以自動刪除這些腳本?

也許

grep -vf <(printf "%s\n" reset newitem details) filename

如前所述,最簡單的方法是grep -v -e reset -e newitem -e details 但是,對於踢,這是sed:

sed '/reset/d;/newitem/d;/details/d'
sed '/reset\|newitem\|details/d'

和awk:

awk '!/reset|newitem|details/'
awk '!/reset/ && !/newitem/ && !/details/'
awk '/reset/ || /newitem/ || /details/ { next } 1'

如果要刪除字符串中任何地方出現“重設”,“新項目”或“詳細信息”的行,則可以輕松地將一些grep -v語句鏈接在一起:

prompt:~/> cat file.txt | grep -v reset | grep -v newitem | grep -v details
<string name="app_name">多系統啟動免費版</string>
<string name="edit">編輯</string>
<string name="edits">編輯\u0020</string>
<string name="resize">改變大小</string>
<string name="seticon">設置圖標</string>
<string name="delete">"刪除 \u0020"</string>
<string name="setdefault">設為默認</string>
<string name="description">多系統啟動免費版</string>
<string name="nodata">沒有發現虛擬系統鏡像!!!</string>

-v搜索通常會返回的grep的倒數 對於像這樣的簡單情況,我認為這種方法比sed或awk容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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