AWK检查字符串模式并从文件中提取它

时间:2015-05-05 04:50:59

标签: unix awk

以下是文件内容:

{30001002|XXparameter|XSD_LOC|$\{FILES_DIR\}/xsd/EDXFB_mbr_demo.xsd|3|2|$|@{0|}}
{30001002|XXparameter|source_files|$XSD/EDXFB_mbr_demo.xsd|3|1|l|@{0|}}

我尝试使用awk完成以下操作: 首先,我想搜索字符串模式“EDXFB * .xsd”。 如果存在,则提取以“EDXFB”开头并以“.xsd”结尾的字符串

输出:

EDXFB_mbr_demo.xsd
EDXFB_mbr_demo.xsd

2 个答案:

答案 0 :(得分:2)

提取表达式并打印出匹配数据的基本awk模式如下:

gawk 'match($0, /EDXFB.+\.xsd/, a) { print a[0] }'

尽管如此,你应该花些时间阅读awk手册。

如果正则表达式只包含较低的字符和/EDXFB[a-z_]+\.xsd/,则正则表达式可以更改为_

[编辑] :使用 @JID 中更干净的代码进行了更新。谢谢:))

答案 1 :(得分:1)

在你的例子中,grep可能会做你想做的事情:

grep -o 'EDXFB.*\.xsd'