2015-04-08 34 views
3

我從這個純文本中刪除了所有電子郵件地址(或者用E替換)。我想保留文本文件中的所有內容。電子郵件地址後面可以跟空格,冒號,分號,問號或感嘆號。我gnuwin並試圖grep的工作,但並沒有得到正確的結果刪除電子郵件模式,保持其餘使用grep,awk或sed?

grep -Eiv "\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b" in.txt > out.txt 

這將刪除包含電子郵件模式每線。我只想要電子郵件消失了。

謝謝

回答

2

對於取代中使用sed沒有grep

sed -r 's/\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b//Ig' in.txt > out.txt 
+0

結合兩個答案(frhd和anubhava)我得到了我wan't代碼的每封電子郵件。 「sed -r」s /([A-Za-z0-9._%+ - ] + @ [A-Za-z0-9 .-] + \ [A-Za-z] {2,4} )// g「in.txt> out.txt」每個電子郵件都從tex文件中刪除! – bertje

+0

此(編輯的)解決方案有效。我認爲這與案件的敏感性有關。感謝您的輸入。 – bertje

+0

不客氣,很高興它的工作。 – anubhava

0

正則表達式版本:

([a-zA-Z0-9\._%+-][email protected][a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4})[\ \:\;\?\!]? 

https://regex101.com/r/qJ2eG7/1

+1

似乎是最後一部分[\ \:\; \?\!]?不需要我的文本文件,只要電子郵件地址沒有遵循bij字母數字字符。所以你的代碼「([a-zA-Z0-9 \ ._%+ - ] + @ [a-zA-Z0-9 \ .-] + \。[a-zA-Z] {2,4}) 「可以在下面的代碼中實現(謝謝) – bertje

1

結合兩個答案(frhd和anubhava)我得到的我想要的代碼。

sed -r "s/([A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4})//g" in.txt > out.txt 

它消除了從文本文件

+0

這是我發佈的幾乎相同的解決方案,請不要作爲其他答案發布。如果我的答案對您有幫助,您可以通過點擊我答案左上角的刻度標記將答案標記爲已接受。 – anubhava

+0

@anubhava我可以證實bertje的解決方案是正確的答案...... – frhd

+1

除了在charatcer類中添加'a-z'外,它與我的答案有何不同? – anubhava