パイプが期待どおりに機能しない2つのgrep呼び出し

パイプが期待どおりに機能しない2つのgrep呼び出し

私は次のコマンドを思い出しました。grep 'rtl' reg_list.txt | grep -E -o -n "id_\w+" reg_list.txt

アイデアは、まずrtlコンテンツを含む行をgrepし、次にid_contentで始まる単語だけをgrepすることです。データはテーブルにあり、最初の列には rtl が含まれ、2 番目の列に id_data が含まれます。

問題は、最初のgrepの結果が2番目のgrepに渡されないことです。

reg_list.txtは、行、列、行を含むテーブルなど、さまざまな種類のデータで構成されています。

ベストアンサー1

最初の結果grep はい2番目の項目に渡されましたが、grep2番目の項目にgrepファイル名を指定したため、読みません(代わりにファイルから読み取られます)。

代わりに:

grep 'rtl' reg_list.txt | grep -E -o -n 'id_[[:alnum:]]+'

\wまた、それ以来PCRE正規表現に[[:alnum:]]変更しました。\wあなたgrepがGNUならgrep、それを維持して\w使用することができますgrep -P

おすすめ記事