我有一个例子:
pic@pic:~$ echo ",article{gjn2010jucs, Author = {Grzegorz J. Nalepa}, " | awk '{gsub(/[^,],.*/,""); print }'
,article{gjn2010juc
pic@pic:~$
如何改进正则表达式以获得结果:
,article{gjn2010jucs
答案 0 :(得分:1)
如果您希望改善正则表达式:您需要使用捕获组,而这些不是sub()
或gsub()
中提供的功能。您需要使用gensub()
。
您可以阅读有关字符串操作函数here的更多信息。
我会像这样使用gensub()
:
awk '{ print gensub(/(,[^,]+).*/,"\\1", "g") }'
测试:
echo ",article{gjn2010jucs, Author = {Grzegorz J. Nalepa}, " | awk '{ print gensub(/(,[^,]+).*/,"\\1", "g") }'
结果:
,article{gjn2010jucs
答案 1 :(得分:1)
或者,不要找到丢弃的东西,而是找到要保留的东西:保留第一个逗号和所有后续的非逗号字符:
gawk 'match($0, /^,[^,]+/, ary) {print ary[0]}'
mawk update:
mawk 'match($0, /^,[^,]+/) {print substr($0, RSTART, RLENGTH)}'