Grep

grep 一系列字元(十進制編碼)

  • October 13, 2021

我有一個接受的字元列表:

!"#$%&'()*+,-./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_

引用自:https://unix.stackexchange.com/questions/673019