18

次のデータ ストリームがあるとします。

BODY1
attrib1:  someval11
attrib2:  someval12
attrib3:  someval13

BODY2
attrib1:  someval21
attrib2:  someval22
attrib3:  someval23

BODY3
attrib1:  someval31
attrib2:  someval32
attrib3:  someval33

BODYごとにattrib1とattrib3のみを抽出したい、つまり

attrib1:  someval11
attrib3:  someval13
attrib1:  someval21
attrib3:  someval23
attrib1:  someval31
attrib3:  someval33

私は試した

grep 'attrib1\|attrib3'、このサイトによると、何も返されませんでした。 grep attrib1データをgrep attrib2返しますが、指定された単一のパターンに対してのみです。

4

5 に答える 5

23

grep -e 'attrib1' -e 'attrib3' file

ページからman

-e PATTERN, --regexp=PATTERN
パターンとして PATTERN を使用します。これを使用して、複数の検索パターンを指定したり、ハイフン (-) で始まるパターンを保護したりできます。(-e は POSIX で指定されています。)

編集: または、パターンをファイルに保存し、次の-fオプションを使用できます。

aman@aman-VPCEB14EN:~$ cat>patt
attrib1
attrib3

aman@aman-VPCEB14EN:~$ grep -f patt test
attrib1:  someval11
attrib3:  someval13
attrib1:  someval21
attrib3:  someval23
attrib1:  someval31
attrib3:  someval33
于 2012-11-28T17:14:30.580 に答える
15

また、egrep;

egrep "pattern1|pattern2|pattern3" file
于 2013-10-16T05:34:09.677 に答える
0

それはあなたが入っているシェルに依存します。grep -iw 'patter1\|patter2\|pattern3'korn シェルでは動作しないため、bash シェルでは動作します。Korn シェルについては、試してみる必要があるかもしれませんgrep -e pattern1 -e patter2

于 2013-10-16T05:18:53.280 に答える
0

これは GNU grep 2.6.3 で動作します

grep "attrib[13]"

また

 grep "^[^0-9]*[13]:"
于 2012-11-28T17:14:49.327 に答える