特定のプレフィックスを持つ単語の抽出

特定のプレフィックスを持つ単語の抽出

次の行を含むファイルがあります。

27/12/20 | 05:50:48pm | abcdefgh  |ID:1:418856791 | jack | 1.1.1.1:1111 | IN | GN-4536 | LOL | 0
27/12/20 | 05:51:44pm | abcdefgh  |ID:1:503729784 | jill | 2.2.2.2:2222 | IN | GN-497187 | LOL2 | 0

このような複数行を含む大きなファイルがあります。このファイルから合計のみを抽出するにはどうすればよいですかGN-4536GN-497187何でもできるようですGN<-numbers>。次の形式で出力を取得するには:

GN-number
GN-number
GN-number
GN-number

sedとコマンドを試しましたが、grep数値を抽出できます。

答え1

それは簡単ですcut

$ cut -f8 -d'|' filename
 GN-4536 
 GN-497187 

これは(シェルからエスケープする必要があります)によって制限されるフィールドをブロックします8fd|

しかしそれは空白を残す。皮をむいて使用することもできますtr

$ cut -f8 -d'|' filename | tr -d ' '
GN-4536
GN-497187

答え2

次のコマンドを試すことができ、テストされて正常に動作します。

awk '{for(i=1;i<=NF;i++){if($i ~ /^GN-[0-9]*$/){print $i}}}' filename

出力

GN-4536
GN-497187

関連情報