我有一个文件看起来像:如何使用backreferrence匹配简单的数学运算?
~ cat dump.txt
<ItemSpec id="46301" Day="1" Week="244251"/>
<ItemSpec id="46302" Day="2" Week="244252"/>
<ItemSpec id="46303" Day="3" Week="244253"/>
<ItemSpec id="46304" Day="4" Week="244254"/>
<ItemSpec id="46305" Day="5" Week="244255|244256|244257|244255|244256|244257|244255|244256|244257|244255|244256|244257"/>
...
我想Week
列数处理后加100,000,就像:
~ <simple shell code> dump.txt
<ItemSpec id="46301" Day="1" Week="344251"/>
<ItemSpec id="46302" Day="2" Week="344252"/>
<ItemSpec id="46303" Day="3" Week="344253"/>
<ItemSpec id="46304" Day="4" Week="344254"/>
<ItemSpec id="46305" Day="5" Week="344255|344256|344257|344255|344256|344257|344255|344256|344257|344255|344256|344257"/>
...
我不知道是否有使用简单的方法反向引用作为数学运算的一个数字。而我的无奈尝试如下:
~ awk '{print gensub(/([0-9]{6})/,"\\1+100000","g",$0)}' dump.txt
<ItemSpec id="46301" Day="1" Week="244251+100000"/>
<ItemSpec id="46302" Day="2" Week="244252+100000"/>
<ItemSpec id="46303" Day="3" Week="244253+100000"/>
<ItemSpec id="46304" Day="4" Week="244254+100000"/>
<ItemSpec id="46305" Day="5" Week="244255+100000|244256+100000|244257+100000|244255+100000|244256+100000|244257+100000|244255+100000|244256+100000|244257+100000|244255+100000|244256+100000|244257+100000"/>
...
任何想法会有所帮助,谢谢!
其实'dump.txt'只是我挑选的一些随机文本,我真正想知道的是正则表达式数学运算的一些简短的shell代码片段。为表达道歉不清楚。对于你的答案而言,这很有帮助。 – hedleyyan
这就是为什么您的数据的代表性样本变得重要。 – Sobrique