Linux

提取具有特定前綴的單詞

  • December 31, 2020

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

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命令,但它可以提取數字。

這很容易cut

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

這削減了由(必須從外殼中轉義)8限定的欄位。f``d``|

但它留在空白處。你可以用tr.

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

我們可以嘗試使用以下命令,經過測試並且工作正常

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

輸出

GN-4536
GN-497187

引用自:https://unix.stackexchange.com/questions/626718