我有一个例子:AWK-如何改善这个正则表达式?
[email protected]:~$ echo ",article{gjn2010jucs, Author = {Grzegorz J. Nalepa}, " | awk '{gsub(/[^,],.*/,""); print }'
,article{gjn2010juc
[email protected]:~$
如何提高正则表达式得到的结果:
,article{gjn2010jucs
我有一个例子:AWK-如何改善这个正则表达式?
[email protected]:~$ echo ",article{gjn2010jucs, Author = {Grzegorz J. Nalepa}, " | awk '{gsub(/[^,],.*/,""); print }'
,article{gjn2010juc
[email protected]:~$
如何提高正则表达式得到的结果:
,article{gjn2010jucs
如果你希望提高你的正则表达式:您将需要使用捕获组,这些不是sub()
或gsub()
中的可用功能。您将需要使用gensub()
。 您可以阅读有关字符串操作功能here的更多信息。
我会用gensub()
这样的:
awk '{ print gensub(/(,[^,]+).*/,"\\1", "g") }'
测试:
echo ",article{gjn2010jucs, Author = {Grzegorz J. Nalepa}, " | awk '{ print gensub(/(,[^,]+).*/,"\\1", "g") }'
结果:
,article{gjn2010jucs
谢谢你提供一个好的解决方案。在gawk中工作,但它不适用于mawk。 – Tedee12345
@ Tedee12345:你说的没错。 'mawk'不能完成某些函数,包括'gensub()'不幸的。 – Steve
或者,而不是寻找的东西丢弃,找到的东西,以保持:保留第一个逗号和所有后续非逗号字符:
gawk 'match($0, /^,[^,]+/, ary) {print ary[0]}'
mawk更新:
mawk 'match($0, /^,[^,]+/) {print substr($0, RSTART, RLENGTH)}'
谢谢你提供一个好的解决方案。在gawk中工作,但它不适用于mawk。 – Tedee12345
@ Tedee12345,已更新为mawk –
再举一个例子。 – Tedee12345
你应该有很多关于你的要求更具体的在这里。 –
我需要什么附加信息?我在谈论这个特例。 – Tedee12345
'awk -F,'{printf',%s \ n“,$ 2}''? – twalberg