次の情報を含むファイルで「SHM」パターンを一致させ、パターンに一致する単語を印刷しようとしています。
LOCALZONE01 ASHM001002003VOL01
BSHM001002003VOL02
CSHM001002003VOL03
DSHM001002003VOL03_DUP
ESHM001002003VOL04
FSHM001002003VOL05
GSHM001002003VOL06_
HSHM001002003VOL07
awkを使用して2番目の列を印刷しようとしています。
grep "SHM" <filename.txt> | awk -F" " '{print $2}'
ASHM001002003VOL01
列1を印刷しようとすると、次の結果が出力されます。
LOCALZONE01
BSHM001002003VOL02
CSHM001002003VOL03
DSHM001002003VOL03_DUP
ESHM001002003VOL04
FSHM001002003VOL05
GSHM001002003VOL06_
HSHM001002003VOL07
以下は私が望む出力です。どうやって入手できますか?
ASHM001002003VOL01
BSHM001002003VOL02
CSHM001002003VOL03
DSHM001002003VOL03_DUP
ESHM001002003VOL04
FSHM001002003VOL05
GSHM001002003VOL06_
HSHM001002003VOL07
ベストアンサー1
GNU grepが利用可能な場合、
grep -Eo '[[:alnum:]_]*SHM[[:alnum:]_]*' < filename.txt
そうでない場合は、各行のフィールドを繰り返してSHMを見つけるようにawkに要求できます。
awk '{ for(i=1;i<=NF;i++) if ($i ~ /SHM/) print $i }' < filename.txt