Grep
grep 一系列字元(十進制編碼)
我有一個接受的字元列表:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI
這些字元可以翻譯成ASCII 十進制範圍33-73
我想要的實現將解析輸入文件的行,檢測超出此範圍的任何字元,並返回相應的行。
grep -E '[^33-73]{1,}'
where
-E
用於正則表達式解釋,^
用於匹配不在列表中的任何字元,{1,}
用於匹配一個或多個匹配項……並且[33-73]
是一種以十進制格式表示所需字元範圍的方法,我不知道如何表達在某種程度上它可以由grep
.(我可以在正則表達式本身中定義字元列表,但是轉義保留
grep -E
字元會使表達式難以閱讀。)有沒有辦法實現這個
grep
?(僅供參考,試圖讓它發揮作用(BSD grep) 2.5.1-FreeBSD
)範例輸入:
$ cat f1.txt (ABC123abc_ ABC!123)-
預期輸出:
(ABC123abc_
由於這些是 ASCII 中的連續字元,您應該能夠簡單地執行以下操作:
$ grep '[^!-I]' file (ABC123abc_
或者,如果您有不同的語言環境,則更安全:
$ LC_ALL=C grep '[^!-I]' file (ABC123abc_