使用sed进行大规模重命名
我必须处理一个从Excel导出的巨大XML文件 该文件如下所示:使用sed进行大规模重命名,sed,Sed,我必须处理一个从Excel导出的巨大XML文件 该文件如下所示: <Row> <Data>some data..</Data> <Data>some data..</Data> <Data>some data..</Data> <Data>some data..</Data> <Data>some data..</Data> <Data>so
<Row>
<Data>some data..</Data>
<Data>some data..</Data>
<Data>some data..</Data>
<Data>some data..</Data>
<Data>some data..</Data>
<Data>some data..</Data>
<Data>some data..</Data>
<Row>
一些数据。。
一些数据。。
一些数据。。
一些数据。。
一些数据。。
一些数据。。
一些数据。。
大约有2000行元素
因此,始终有一行标记和7个数据子标记。现在,我想将每个第一个数据标记重命名为“one”,第二个数据标记重命名为“second”,依此类推
要做到这一点,正确的sed语法是什么?考虑改用awk
BEGIN {
NUM[1]="one"
NUM[2]="two"
NUM[3]="three"
NUM[4]="four"
NUM[5]="five"
NUM[6]="six"
NUM[7]="seven"
}
/<Row/{
print
for(i=1;i<8;i++) {
getline
sub(/Data/, NUM[i]);print
}
}
/<\/Row/{print}
开始{
NUM[1]=“一”
NUM[2]=“两个”
NUM[3]=“三”
数字[4]=“四”
NUM[5]=“五”
NUM[6]=“六”
NUM[7]=“七”
}
/你说的“重命名”是什么意思?您是想替换“somedata..”部分,还是真的要更改标记?我认为sed不是完成这项工作的合适工具。您是否考虑过使用python或perl脚本来完成这项工作?Sed可能不是最好的工具,但我不会认为这项工作是错误的。
$ awk -f r.awk input
<Row>
<one>some data..</one>
<two>some data..</two>
<three>some data..</three>
<four>some data..</four>
<five>some data..</five>
<six>some data..</six>
<seven>some data..</seven>
</Row>