我有这样的场景
file1有
cat file1
aa~bb~1~dd
xx~yy~2~kk
cc~ff~3~pp
.......
我想像这样更新文件
cat file2
aa~bb~20~dd
xx~yy~21~kk
cc~ff~22~pp
.......
尝试使用以下代码但无效
seq_nr=20
i=1
while [i -le 10 ]
do
seq_nr=`expr 20 + 1`
awk 'BEGIN {FS=OFS="~"} NR==i {$3=$seq_nr} {print} file1 > file2
i= `expr i +1`
done
答案 0 :(得分:0)
你可以使用这个awk one-liner:
awk 'BEGIN{FS=OFS="~"} {$3+=19}1' file1 > file2
cat file2
aa:bb:20:dd
xx:yy:21:kk
cc:ff:22:pp
OR纯BASH代码:
IFS='~' && while read v1 v2 v3 v4; do
echo "$v1:$v2:$((v3+19)):$v4"
done < file
答案 1 :(得分:0)
试试这个单行:
awk -F~ -v OFS='~' '$3=19+NR' file
以你的例子:
kent$ echo "aa~bb~1~dd
xx~yy~2~kk
cc~ff~3~pp"| awk -F~ -v OFS='~' '$3=19+NR'
aa~bb~20~dd
xx~yy~21~kk
cc~ff~22~pp