Sed替换第一个值

时间:2015-09-29 17:41:24

标签: bash sed

我想替换第一个值(在第一列和第一行,所以这里1)并在此值中加一,所以我有一个这样的文件

1
1 1
2 5
1 6

我用这句话

read -r a < file
echo $aa
sed  "s/$aa/$(($aa + 1))/" file
# or 
sed  's/$aa/$(($aa + 1))/' file

但是当我做到这一点时,他将所有第一列改为二。我试着改变报价,但它什么也没做。

2 个答案:

答案 0 :(得分:1)

将脚本限制为仅限第一行,即

sed '1s/old/new/'

awk可能是一个更好的工具。

awk 'NR==1{$1=$1+1}1'

为第一行添加1到第一个字段并打印。可以改写为

awk 'NR==1{$1+=1}1'

awk 'NR==1{$1++}1'

答案 1 :(得分:1)

perl -p0e 's/(\d+)/$1+1/e' file