特定の単語の前に、が表示される状況を検索する

特定の単語の前に、が表示される状況を検索する

6番目の場所に、「ハッピー」という特定の単語を含む行数を見つける必要があるCSVファイルがあります。 5つのカンマの後ろ。

だから私はこれを書いています:

grep -P -c  ",\{5,\}"'Happy' file.csv

しかし、0を返します。

ファイルの内容は次のとおりです。

123、abc、def、ghi、e444、ハッピー、224、e44

ベストアンサー1

grep -E '^([^,]*,){5}Happy' <in >out

これで見つけることができます。Happy5番目のカンマのすぐ隣にある場合にのみ適用されます。 6番目のフィールド内のどこでも見つけるために少しの呼吸スペースを追加します。

grep -E '^([^,]*,){5}[^,]*Happy' <in >out

一致する行のみを計算するには、次の-cオプションを使用してください。

grep -cE '^([^,]*,){5}[^,]*Happy' <in >out

私は正規表現に慣れていますが、そうでなくても他の型よりもre構文を選択するようです。いくつかのベースラインを学ぶと、残りも所定の位置になります。正規表現は、非常に少数の基本コンポーネントを複数の方法で組み合わせて入力を記述します。

  • * クリント

    • 前の式が0回以上発生することを示します。
  • [角かっこ表現]

    • 何が起こったかを示します。^拒否されることがあります)文字セットを含める
  • {最小,最大}繰り返し回数

    • 前の式の発生回数を指定します。

    • 拡張正規表現メタ文字?はの略語です{0,1}

  • (サブ式)

    • 含まれるすべての式を単一の式として収集します。
  • .特徴

    • 単一文字と一致
  • ^|$

    • ^次の式の行開始アンカーポイント、|式間の交互、または$行末アンカーポイントを示します。

これが基本です。 POSIX-E拡張正規表現構文には以下も含まれます。クライン +- これは以下に関連しています。*必要を除くすべての側面最後のもの前の表現と一致します。角かっこ式には、特に内部文字クラスと反復と一致する方法に関連する[さまざまな微妙さがあります。実際にほとんどの実装][(:|.|=)(=|.|:)]延長する拡張された re 構文は、前のサブ式に対する少なくとも基本正規表現の逆\[num]参照を処理できます。()

しかし、基本的に考えてみると、上記の表現の1つまたは他の単一の文字はそれ自体で表現され、すべて結合されて希望の一致を説明する完全な表現になります。

これらすべてをまとめると、grep上記の式は次のように分類されます。

  • ^([^,]*,){5}Happy

    • 一番左の位置から始まり、一致する行には、ゼロ個以上の非カンマ文字で構成されるシーケンスが5個以下でなければなりません。各シーケンスの後にコンマ文字が続き、すべてのシーケンスの後に文字列が続きます。Happy

おすすめ記事