Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何使用sed/awk/perl在文件中使用递增的字母数字值进行递归替换_Regex_Perl_Awk_Sed - Fatal编程技术网

Regex 如何使用sed/awk/perl在文件中使用递增的字母数字值进行递归替换

Regex 如何使用sed/awk/perl在文件中使用递增的字母数字值进行递归替换,regex,perl,awk,sed,Regex,Perl,Awk,Sed,如何使shell脚本使用Sed或awk递归替换相同的值和递增的字母数字值,并再次使用递增的字母数字值递归内部。它应该一直发生到文件末尾的第n个值 ---输入文件如下---- ---输出要求如下---- 以下是一些帮助您的方法: awk -F\" '/^<first/ {a++;b=0} {n=split($2,s,"/");q=s[n];$2="A0"a ($0~/<inner/?"_0"++b"_"q:"")}1' OFS=\" file <first line has

如何使shell脚本使用Sed或awk递归替换相同的值和递增的字母数字值,并再次使用递增的字母数字值递归内部。它应该一直发生到文件末尾的第n个值

---输入文件如下----


---输出要求如下----


以下是一些帮助您的方法:

awk  -F\" '/^<first/ {a++;b=0} {n=split($2,s,"/");q=s[n];$2="A0"a ($0~/<inner/?"_0"++b"_"q:"")}1' OFS=\" file
<first line has same value as testname="A01" enabled="true">
    <inner first line has url testname="A01_01_" enabled="true">
    <inner second line has url testname="A01_02_views?" enabled="true">
<first line has same value as testname="A02" enabled="true">
    <inner first line has url testname="A02_01_perf" enabled="true">
    <inner second line has url testname="A02_02_surf" enabled="true">
    <inner third line has url testname="A02_03_duff" enabled="true">
<first line has same value as testname="A03" enabled="true">
     <inner first line has url testname="A03_01_complete" enabled="true">
     <inner second line has url testname="A03_02_one" enabled="true">
     <inner third line has url testname="A03_03_two" enabled="true">

awk-F\“/^你最好复制一小部分真实文本,否则在有人发布答案后,肯定会有
乒乓球
回合。例如,我们如何知道
第一行有
第二行
。。。我们有什么固定的模式可以使用吗?我不认为
首先
内部
会是正确的选择。嗨,Jotne,谢谢你的帮助。你能详细地给我解释一下吗。还有一件事我可以处理,假设我有以下几行。假的
<first line has same value as testname="A01" enabled="true">
    <inner first line has url testname="A01_01" enabled="true">
    <inner second line has url testname="A01_02_views?" enabled="true">
<first line has same value as testname="A02" enabled="true">
    <inner first line has url testname="A02_01_perf" enabled="true">
    <inner second line has url testname="A02_02_surf" enabled="true">
    <inner third line has url testname="A02_03_duff" enabled="true">
<first line has same value as testname="A03" enabled="true">
    <inner first line has url testname="A03_01_complete" enabled="true">
    <inner second line has url testname="A03_02_one" enabled="true">
    <inner third line has url testname="A03_03_two" enabled="true">
awk  -F\" '/^<first/ {a++;b=0} {n=split($2,s,"/");q=s[n];$2="A0"a ($0~/<inner/?"_0"++b"_"q:"")}1' OFS=\" file
<first line has same value as testname="A01" enabled="true">
    <inner first line has url testname="A01_01_" enabled="true">
    <inner second line has url testname="A01_02_views?" enabled="true">
<first line has same value as testname="A02" enabled="true">
    <inner first line has url testname="A02_01_perf" enabled="true">
    <inner second line has url testname="A02_02_surf" enabled="true">
    <inner third line has url testname="A02_03_duff" enabled="true">
<first line has same value as testname="A03" enabled="true">
     <inner first line has url testname="A03_01_complete" enabled="true">
     <inner second line has url testname="A03_02_one" enabled="true">
     <inner third line has url testname="A03_03_two" enabled="true">
awk  -F\" '                                 # Set field separator to "
/^<first/ {                                 # If record starts with <first then do:
    a++                                     # Increment variable a
    b=0}                                    # Set b to 0
    {                                       # For all run do:
    n=split($2,s,"/")                       # Split data in field 2, to array s slitted by /. Sen variable n to number of data in array s
    q=s[n]                                  # Set variable q to last element in array s
    $2="A0"a ($0~/<inner/?"_0"++b"_"q:"")   # Set field 2 to: "A0" + value of a + ( if $0 equal "inner" to "_0" b (auto increment) "_" q, else "") 
    }
1                                           # Print the line
' OFS=\" file                               # Set Output Field Separator to " and read the file