編集する

編集する

1つ以上のインスタンスを含むが他の数字は含まないファイルの行を検索しようとします1234(数値以外の文字は許可されています)。他の数字を使用すると、行が一致しなくなります。

有効な例:

  • 1234
  • 1234 xxx
  • xxx 1234
  • 1234 1234
  • 1234 xxx 1234

無効な例:

  • 12341234
  • 12345
  • 1234xxx345
  • 1234 345
  • 1234xxx
  • xxx1234
  • 1234xxx1234

これが私が使用したものです:

grep -E '^([^0-9]*1234)+[^0-9]*$' file.txt

ただし、このコマンドは有効な12341234も出力します。これを防ぐにはどうすればよいですか?

ベストアンサー1

awkgrepこれよりも便利かもしれません。フィールド区切り文字を数字以外の連続文字に設定してからフィールドを繰り返し、空でない各フィールドが正確に次の場合にのみ行を印刷します。1234

awk -F'[^[:digit:]]+' '{
  for(i=1; i<=NF; ++i) 
  if (($i) && ($i != 1234)) next
  }; {print}' file.txt

おすすめ記事