同じ文字列から行を抽出する

同じ文字列から行を抽出する

次のような表があります:

ここに画像の説明を入力してください

そして、3列目の2つの文字列を含むファイル: apple potato

これを取得するには、ヘッダーと文字列appleとpotatoを含むすべての行を抽出したいと思います。

ここに画像の説明を入力してください

ありがとう

答え1

使用方法awk:

awk 'FNR == 1 || /potato|apple/'

使用方法sed:

sed -n '1p; /potato\|apple/p'

どちらの場合も、行番号 1 とそれに一致する行potato|appleが印刷されます。

答え2

txt テーブルをプレーンテキストで再度示します。

A       B       C       D       E
21      63      apple   yellow  5
23      69      lemon   green   6
45      135     orange  yellow  7
67      201     mango   green   4
54      162     potato  maroon  5

複雑さの少ない解決策を考えることはできますが、ちょっとハックっぽいと思います:-) テーブルtxtファイルが次のように呼ばれていると仮定します。table1

$ head -1 table1 && grep '\b\(potato\|apple\)\b' table1

これは最初の行を取得し、grepそれに結果を追加します。\bは単語の境界です。したがって、これにより、「grapple (hook)」などの単語が除外されます :) もう 1 つのより複雑なソリューションでは、A、B、C... がタブで区切られていると想定します\t

$ grep '\(\b\(potato\|apple\)\b\|\([A-Z]\|\(\t\|\n?$\)\)\)' table1

関連情報