我有一个例子:
pic@pic:~$ echo ",article{gjn2010jucs, Author = {Grzegorz J. Nalepa}, " | awk '{gsub(/[^,],.*/,""); print }'
,article{gjn2010juc
pic@pic:~$ 如何改进正则表达式以获得结果:
,article{gjn2010jucs发布于 2012-10-03 07:24:38
如果您希望改进您的正则表达式:您将需要使用捕获组,而这些功能在sub()或gsub()中是不可用的。您将需要使用gensub()。您可以阅读有关字符串操作函数here的更多信息。
我会这样使用gensub():
awk '{ print gensub(/(,[^,]+).*/,"\\1", "g") }'测试:
echo ",article{gjn2010jucs, Author = {Grzegorz J. Nalepa}, " | awk '{ print gensub(/(,[^,]+).*/,"\\1", "g") }'结果:
,article{gjn2010jucs发布于 2012-10-03 08:28:00
或者,不是找到要丢弃的内容,而是找到要保留的内容:保留第一个逗号和所有后续的非逗号字符:
gawk 'match($0, /^,[^,]+/, ary) {print ary[0]}'mawk更新:
mawk 'match($0, /^,[^,]+/) {print substr($0, RSTART, RLENGTH)}'https://stackoverflow.com/questions/12695831
复制相似问题