GNU/Linux >> Linux の 問題 >  >> Linux

特定の数を超える特殊文字を含む行をgrepする方法

Perl ソリューション:

perl -ne 'print if tr/,// > 4'
  • -n ファイルを 1 行ずつ読み取ります
  • tr 演算子は一致数を返します。

4 行未満の行を出力するには、> を変更するだけです < まで .


grep の使用 コマンド:

grep -E '(,.*){5}' myfile

仕事をします。説明:

-E :拡張正規表現を使用します...

'(,.*) :... 1 つのカンマの後に任意の数の文字が続くものを検索するには ...

{5}' :...そして、前のパターンを 5 回繰り返します。

カンマが 4 つ未満の行を grep したい場合は、以下が必要です:

grep -xE '([^,]*,){0,3}[^,]*' myfile

今回は -x が必要です そのため、パターンは行の先頭と末尾の両方に固定されているため、行全体に一致します。 [^,]* を使用します .* の代わりに 後者は、そうでなければ , を含む文字列とうまく一致するためです。 s as . すべてに一致

別のアプローチは、 -v で逆にすることです 以前のアプローチ。 "Fewer that 4" は not と同じです 「少なくとも 4」なので、

grep -vE '(,.*){4}' myfile

awk バージョン:

awk -F, 'NF > 5' myfile

Linux
  1. Linuxコマンドラインでファイルの特定の行を表示する方法

  2. 複数行の出力を 1 行に連結する方法は?

  3. 先読みを使用して正規表現で特殊文字を除外する方法

  1. Linuxの「cat」コマンドを使用して、特定の行のみを番号で表示するにはどうすればよいですか。

  2. Linux –特定の単語をgrepしてテキストを取得する方法は?

  3. Linuxで特殊文字を入力するには?

  1. 「#」または「;」で始まらない行をgrepする方法は?

  2. Grep一致後のファイルの行数をカウントする方法は?

  3. Linux でファイルの行数を数える方法 (wc および nl コマンドの例)