次の行を含むファイルがあります。
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-4536
?GN-497187
何でもできるようですGN<-numbers>
。次の形式で出力を取得するには:
GN-number
GN-number
GN-number
GN-number
sed
とコマンドを試しましたが、grep
数値を抽出できます。
答え1
それは簡単ですcut
:
$ cut -f8 -d'|' filename
GN-4536
GN-497187
これは(シェルからエスケープする必要があります)によって制限されるフィールドをブロックします8
。f
d
|
しかしそれは空白を残す。皮をむいて使用することもできます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