我知道在类似主题上有几个问题,但它们都不适用于我。具体来说,我有:
the date is (Dec 2013).
作为记录中的字段,我只想要Dec 2013
部分并将其存储在变量中。我试过match()
,但它不起作用。这是我的代码(字段是$ 2):
match($2,/\(([^)]+)\)/,a);
print a[0];
但它给了我一个错误awk: illegal statement at source line 8 source file script.awk
。第8行是match()
的行。任何人都可以帮我解决问题吗?
它必须是awk,因为它是大脚本的一部分。
答案 0 :(得分:1)
grep怎么样?它诞生于提取:
kent$ echo "the date is (Dec 2013)"|grep -Po '\(\K[^)]*'
Dec 2013
好的,你需要awk:
kent$ awk 'BEGIN{s="the date is (Dec 2013)";if(split(s,a,"[()]")==3)print a[2]}'
Dec 2013
您s
上方的$2
将print
替换为变量以进行分配。我将整个事情放在BEGIN
中,仅用于测试。
答案 1 :(得分:1)
您可以在AWK中使用sub。基本上这会将场地切割成你想要的。
所以你可以做到以下几点:
date = your_field
# this chops everything from front to first '('
sub("^.*\(", "", date)
# this chops off everything from the last ')' to the end of the field
sub("\).*$", "", date)