![](/img/trans.png)
[英]Powershell remove any lines from big text file containing any of a large number of strings
[英]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.