将计数附加到多个文件中的代码并保存结果
Appending a count to a code in multiple files and saving the result
我想在这里寻求一些帮助。我完全是新手!
我需要在文件中查找与模式 A00000_00_A 匹配的代码并向其附加计数,因此它第一次出现时被替换为 A00000_00_A_001,第二次出现 A00000_00_A_002 等输出需要写回同一个文件。每个文件只包含1个代码,但出现了多次
经过一些挖掘我发现-
perl -pi -e 's/Q\d{4,5}'_'\d{2}_./$&.'_'.++$A /ge' /users/documents/*.xml
但问题是计数器不会在每个文件中重置。
也就是说,第一个文件的输出是Q00390_01_A_1到Q00390_01_A_7,而第二个文件是Q00391_01_A_8到Q00391_01_A_10。
我想要的是第一个文件中的Q00390_01_A_1到Q00390_01_A_7和第二个文件中的Q00391_01_A_1到Q00391_01_A_2。
有没有人知道如何编辑上面的代码来做到这一点?我是一个新手,所以理想情况下对我所拥有的进行编辑会很棒。谢谢
cd /users/documents/
for f in *.xml;do
perl -pi -e 's/facs=.(Q|M)\d{4,5}_\d{2}_\w/$&._.sprintf("%04d",++$A) /ge' $f
done
这匹配字符串 facs=
和任何字符,然后是“Q”或“M”,后跟四或五个数字,然后是一个下划线,然后是两个数字、另一个下划线和一个单词字符。然后将整个匹配项与下划线连接,并将 $A 的值补零至四位数字。
我想在这里寻求一些帮助。我完全是新手!
我需要在文件中查找与模式 A00000_00_A 匹配的代码并向其附加计数,因此它第一次出现时被替换为 A00000_00_A_001,第二次出现 A00000_00_A_002 等输出需要写回同一个文件。每个文件只包含1个代码,但出现了多次
经过一些挖掘我发现-
perl -pi -e 's/Q\d{4,5}'_'\d{2}_./$&.'_'.++$A /ge' /users/documents/*.xml
但问题是计数器不会在每个文件中重置。
也就是说,第一个文件的输出是Q00390_01_A_1到Q00390_01_A_7,而第二个文件是Q00391_01_A_8到Q00391_01_A_10。
我想要的是第一个文件中的Q00390_01_A_1到Q00390_01_A_7和第二个文件中的Q00391_01_A_1到Q00391_01_A_2。
有没有人知道如何编辑上面的代码来做到这一点?我是一个新手,所以理想情况下对我所拥有的进行编辑会很棒。谢谢
cd /users/documents/
for f in *.xml;do
perl -pi -e 's/facs=.(Q|M)\d{4,5}_\d{2}_\w/$&._.sprintf("%04d",++$A) /ge' $f
done
这匹配字符串 facs=
和任何字符,然后是“Q”或“M”,后跟四或五个数字,然后是一个下划线,然后是两个数字、另一个下划线和一个单词字符。然后将整个匹配项与下划线连接,并将 $A 的值补零至四位数字。