[英]bash - remove multiple different lines of text from a text file
我正在使用許多日志文件,大多數日志文件都有很多重復的字符串,這些字符串被多次記錄。 為了使與其他事情無關的其他人(也對我自己)而言,日志易於查看,我想制作一個腳本,該腳本會刪除一些文本行,這些文本行可能對其他人造成“虛假警報” 。 (“嗨,管理員,我在這里多次遇到這些錯誤”;>“抱歉,這些錯誤沒有任何意義”)
是否有一些帶有grep,cat或awk的bash代碼可以消除很多不同的文本行,而不必一遍又一遍地刪除每行要刪除的文檔? (基本上一舉刪除所有垃圾行)
例如,我將要刪除的行用粗體標記:
一件事我不知道為什么
努力程度甚至都沒有關系
請記住,我設計了這首韻律
適時解釋
我所知道的
時間是一件寶貴的事情
看着它隨着鍾擺的擺動而飛過
看着它倒計時到一天結束
時鍾敲打生活
太虛幻了
沒看下面
看着時間窗外
試圖堅持,但甚至不知道
浪費這一切只是為了
看你走
對不起Linkin Park歌詞,在嘗試解決問題的同時收聽廣播有時會給出一些錯誤的例子:P
所有這些行都可以在一個命令中刪除嗎? 如果有人知道,非常感謝。
grep -v "<string1>\|<string2>\|<stringN>" /path/to/file
它刪除not_wanted數組中提供的行。
#!/bin/bash
exec < example.txt
not_wanted[0]="It doesn’t even matter how hard you try"
not_wanted[1]="time is a valuable thing"
not_wanted[2]="The clock ticks life away"
not_wanted[3]="It’s so unreal"
not_wanted[4]="Trying to hold on but didn’t even know"
while read line; do
for i in "${not_wanted[@]}"; do
if [ "$line" == "$i" ]; then unset line; break; fi
done
if [ "$line" ]; then echo "$line"; fi
done
將不需要的行放入文件中,然后
grep -v -f not.wanted filename > smaller.file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.