Regex AWK:匹配捕获组中的字符

Regex AWK:匹配捕获组中的字符,regex,awk,Regex,Awk,例如,我在文本中有这样的引用组 Lorem ipsum \textbf{dolor} sit amet \cite{a,b,c,d,e}, consectetur adipiscing elit. In molestie urna et dui $\mu=\text{a b c}$ venenatis pretium. Duis sit amet metus orci \cite{a,b,c,d,e}. Nunc non lobortis arcu, sit amet imperdiet dia

例如,我在文本中有这样的引用组

Lorem ipsum \textbf{dolor} sit amet \cite{a,b,c,d,e}, consectetur adipiscing elit. In molestie urna et dui $\mu=\text{a b c}$ venenatis pretium. Duis sit amet metus orci \cite{a,b,c,d,e}. Nunc non lobortis arcu, sit amet imperdiet diam \cite{b,e,f}.  
在latex文件中。可能存在许多这样的段落

我想匹配
\cite
命令中的所有逗号
以替换为另一个字符,比方说使用
使所有引用成为
\cite{a.b.c.d.e}
\cite{b.e.f}
,保持文本不变

所以输出应该是

 Lorem ipsum \textbf{dolor} sit amet \cite{a.b.c.d.e}, consectetur adipiscing elit. In molestie urna et dui $\mu=\text{a b c}$ venenatis pretium. Duis sit amet metus orci \cite{a.b.c.d.e}. Nunc non lobortis arcu, sit amet imperdiet diam \cite{b.e.f}.

你的问题不清楚,但这是你想要的吗

$ awk -F, 'match($0,/\\cite\{([^\}]+)/,a) {$0=a[1]; for (i=1; i<=NF; i++) print NR, i, $i}' file
1 1 a
1 2 b
1 3 c
1 4 d
1 5 e
2 1 b
2 2 e
2 3 f
鉴于您最近发布的示例输入输出:

$ awk -v RS='[\\]cite[{][^}]+[}]' '{ORS=gensub(/,/,".","g",RT)} 1' file
Lorem ipsum \textbf{dolor} sit amet \cite{a.b.c.d.e}, consectetur adipiscing elit. In molestie urna et dui $\mu=\text{a b c}$ venenatis pretium. Duis sit amet metus orci \cite{a.b.c.d.e}. Nunc non lobortis arcu. sit amet imperdiet diam \cite{b.e.f}.

仍然使用GNU awk,这一次用于多字符RS和RT。

谢谢,但我想处理逗号(用另一个字符替换它们)。我再次更新了问题@Ed Morton.
sed-E:a;s/({[^,}]*),/\1./g;ta'
使用sed,OP显示的内容比他要求的内容要容易得多,但无论如何GNU sed会给出
sed:-e表达式#1,char 23:在执行该命令时,前面的正则表达式无效,除了s和g之外的所有sed构造在1970年代中期awk发明时都已过时。非常感谢,我开始使用
RS
,但想不起使用
RT
。使用您发布的
sed的/,//g'
是您所需要的全部,因此您的问题并不只是提供更真实地表示实际输入的示例输入/输出。在一般情况下,要匹配latex宏参数列表中分隔参数的逗号,需要比完整解析器提供的更精细和复杂。你将不得不放弃你想要生火的欲望,忘记解决问题的办法。
$ awk -v RS='[\\]cite[{][^}]+[}]' '{ORS=gensub(/,/,".","g",RT)} 1' file
Lorem ipsum \textbf{dolor} sit amet \cite{a.b.c.d.e}, consectetur adipiscing elit. In molestie urna et dui $\mu=\text{a b c}$ venenatis pretium. Duis sit amet metus orci \cite{a.b.c.d.e}. Nunc non lobortis arcu. sit amet imperdiet diam \cite{b.e.f}.