2017-03-07 62 views
-1

我有一個包含文件名看起來像這樣的 「aaa.ext」文件文本
「ABC」
「a1a.ext」
「東亞銀行」
「PAT」
「ff#!」
「TOTO € .PDF」
「......」
的grep:過濾掉只包含特定字符

我需要提取包含標準英語合法字符(包括AZ,az,0-9,_和。)和其他字符線

關於上面的例子中,輸出應該是這樣
BEA(包含é代替E)
PAT(包含à代替)
「FF#!」
「toto € .pdf」

任何想法?

在此先感謝

回答

0

嘗試

LC_ALL=C.UTF-8 grep '[A-Za-z0-9_.]' yourFile | 
LC_ALL=C.UTF-8 grep '[^A-Za-z0-9_.]' 

這也可以寫成

(export LC_ALL=C.UTF-8; grep -P '[\w.]' yourFile | grep -P '[^\w.]') 

LC_ALL=C.UTF-8確保A-Z只符合標準的英文字母和字母不一樣é

注:在Unicode中é可以編碼爲實ée´組合。如果你的文件包含以下兩行(沒有評論)

é # single character 
é # combination of "e" and "´" 

然後從上面的命令將返回

é # combination of "e" and "´" 

的問題是有點異國情調,應該不會造成太多的麻煩。

+0

Socowi喜+1的快速反應。建議的命令會突出顯示特殊字符,但是它不會排除不包含任何 – BNT

+0

@BNT的行奇怪...我測試了這兩個命令並獲得了期望的結果。你能舉出另一個例子,其中沒有特殊字符的行被接受嗎? – Socowi

+0

這裏有幾個例子
12 - Mémo.pdf
2016年4月25日ᄋ ᅩ ᄒ ᅮ 7.59.12.jpg
20161109133127734.pdf
〜9963007Opoto.pdf
在上面的例子;應該檢索第2行和第4行,第1行和第3行不應該
再次感謝 – BNT