簡體   English   中英

bash-從文本文件中刪除多行不同的文本

[英]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.

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