2016-11-25 23 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

相关问题