基本的に、上記の0から255から257までの数字を一致させたい正規表現形式の文字列を一致させたいと思います。これは、256を除くすべての数字を意味します。
誰もが同じ正規表現形式を助けることができますか?
答え1
私が質問を理解する限り、これらの数字はすべて整数です。アイデアは、前にゼロがある場合とない場合の256以外の数字を含む項目を一致させて表示することです。
電話番号は1行にする必要がありますか?:
grep "^[0-9][0-9]*$" | grep -v "^0*256$"
(grep -v
一致する行を含む代わりに除く)
出力:
$ echo "12" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
12
$ echo "2567" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
2567
$ echo "256" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
$ echo "0256" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
$ echo "something" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
別の区切り文字を使用する場合:
たとえば、前処理された入力を使用して上記のコマンドと互換性を持たせるsed
ことができます。以下は、各カンマが改行文字()で置き換えられるgrep
カンマ区切りの入力です。\n
sed -r 's/,/\n/g'
出力:
$ echo "2567,255,256,12,something,05,0256" | sed -r 's/,/\n/g' | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
2567
255
12
05
最後に、数字は他の任意の文字と混在している必要があります。
この場合、追加の手順で数値以外のすべての文字を削除できます。
sed -r 's/[^0-9]//g'
出力:
$ echo "2567,255,256,mama256a,papa1812b,something,05,0256" | sed -r 's/,/\n/g' | sed -r 's/[^0-9]//g' | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
2567
255
1812
05