<p>如果您的输入文件与所示示例相同,请尝试以下操作<code>awk</code>,并让我知道这是否对您有帮助。你知道吗</p>
<pre><code>awk '
BEGIN{
val[1]="R";
val[2]="S";
val[3]="T"
}
$2 !~ /^H[0-9]+/ || i==3{
i=""
}
$2 ~ /^H[0-9]+$/ && /^1ECLI/{
$2=$2val[++i]
}
1
' Input_file > temp_file && mv temp_file Input_file
</code></pre>
<p>对答案也作如下解释。你知道吗</p>
<pre><code>awk '
BEGIN{ ##Starting BEGIN section of awk here.
val[1]="R"; ##creating an array named val whose index is 1 and value is string R.
val[2]="S"; ##creating array val 2nd element here whose value is S.
val[3]="T" ##creating array val 3rd element here whose value is T.
}
$2 !~ /^H[0-9]+/ || i==3{ ##Checking condition if 2nd field does not start from H and digits after that OR variable i value is equal to 3.
i="" ##Then nullifying the value of variable i here.
}
$2 ~ /^H[0-9]+$/ && /^1ECLI/{ ##Checking here if 2nd field value is starts from H till all digits till end AND line starts from 1ECLI string then do following.
$2=$2val[++i] ##re-creating value of 2nd field by adding value of array val whose index is increasing value of variable i.
}
1 ##Mentioning 1 here, which means it will print the current line.
' Input_file > temp_file && mv temp_file Input_file ##Mentioning Input_file name here.
</code></pre>