2016-11-25 84 views
0

我試圖得到"([:alnum][:alnum][:alnum]" and ")"和字符串本身之間的字符串。這個想法實際上是清理被許多不需要的字符污染的文件。gawk字符串提取之間([:alnum] [:alnum] [:alnum]和[:alnum])

比如我有很多行的東西,如:

bÖÓÄÉ@@@@ø16/11/2016 15H03'09" (ACTA/BN940-RYR71ND/A4067-LIPH-NILDU/1513F270-LEBL-9/B738/M-80/S-81/W/EQ Y/EQ) ø  ZZZZtA$bÖÓÄÉ 

而且我想這樣的輸出:

(ACTA/BN940-RYR71ND/A4067-LIPH-NILDU/1513F270-LEBL-9/B738/M-80/S-81/W/EQ Y/EQ) 

我這個GAWK命令嘗試,但它並沒有在所有的工作:

gawk 'NR > 1 {print $1}' RS='([[:alnum:]]*3' FS=')' $INPUT_FILE 
+1

爲什麼不'grep -oP'\(。* \)'inputfile'?這將在'('和')'之間打印任何東西。或'grep -oP'\(\ K。*(?= \))'inputfile',如果你不想在你的outptu輸入'(&)'。 –

+0

該文件包含許多寄生蟲字符,如「H @@@@ A @」,被檢測爲括號......這就是爲什麼我需要更復雜的模式。 – TheFrenchGuy

回答

3

這看起來像一個標準的使用GNU的grep:

grep -o '([[:alnum:]]\{3\}.*[[:alnum:]])' file 

您的正則表達式語法存在一些問題,我已更正。

-o選項只打印該行的匹配部分。

+1

非常感謝!那正是我所需要的。 – TheFrenchGuy

相關問題