提取具有特定前缀的单词

提取具有特定前缀的单词

我有一个文件,其中包含以下行:

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

我尝试使用sedgrep命令,但它可以提取数字。

答案1

这很容易cut

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

这切断了由(必须从 shell 中转义)限制的字段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

相关内容