原始的文件内容.
# cat argFile
1 a b c
1 a b c
1 a b c
1 a b c
需要把第一列改成按顺序的序号。
(1)
#awk 'BEGIN{I=1;} {$1=i; i+++; print}' argFile
1 a b c
2 a b c
3 a b c
4 a b c
(2)使用内置函数sub
#awk 'BEGIN{i=1;} {sub($1,i);i++;print}' argFile
1 a b c
2 a b c
3 a b c
4 a b c
注意:awk中的变量不需要加$,直接用变量名就可以。
但是这(1)和(2)都需要重定向才能改变原来的文件。
(3)sed+shell
#cat argOne.ksh
#! /bin/bash
for (( i=1; i<=4; i++ )); do
sed -i ' '$1' s/^1/'$1'/g ' argFile
done
# ./argOne.ksh
# cat argFile
1 a b c
2 a b c
3 a b c
4 a b c
用sed不需要对文件进行重定向。注意:$1需要用单引号(‘)括起来,才能有值。