([:alnum][:alnum][:alnum] 和 [:alnum]) 之间的 gawk 字符串提取
gawk string extract between ([:alnum][:alnum][:alnum] and [:alnum])
我正在尝试获取 "([:alnum][:alnum][:alnum]" and ")"
和字符串本身之间的字符串。事实上,这个想法是清理一个被许多不需要的字符污染的文件。
例如,我有很多行类似 :
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 }' RS='([[:alnum:]]*3' FS=')' $INPUT_FILE
这看起来像是 GNU grep 的标准用法:
grep -o '([[:alnum:]]\{3\}.*[[:alnum:]])' file
您的正则表达式语法存在一些问题,我已更正。
-o
选项仅打印行的匹配部分。
我正在尝试获取 "([:alnum][:alnum][:alnum]" and ")"
和字符串本身之间的字符串。事实上,这个想法是清理一个被许多不需要的字符污染的文件。
例如,我有很多行类似 :
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 }' RS='([[:alnum:]]*3' FS=')' $INPUT_FILE
这看起来像是 GNU grep 的标准用法:
grep -o '([[:alnum:]]\{3\}.*[[:alnum:]])' file
您的正则表达式语法存在一些问题,我已更正。
-o
选项仅打印行的匹配部分。