我有一个文件,其中包含以下行:
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
这切断了由(必须从 shell 中转义)限制的字段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