我有一个$ FILE
1 textline1
1 textline2
1 textline3
1 textline4
Run Code Online (Sandbox Code Playgroud)
我想搜索textline3并进行求和:1stcolumn + 1
Linenumber是:
lnr=$(grep -n textline3 $FILE | cut -d : -f1)
Run Code Online (Sandbox Code Playgroud)
但是当我使用awk时:
awk -v l="$lnr" 'FNR==l{ sub($1,$1 + 1); print }1' $FILE
Run Code Online (Sandbox Code Playgroud)
我得到了错误(第3行是双重打印)
1 textline1
1 textline2
2 textline3
2 textline3
1 textline4
Run Code Online (Sandbox Code Playgroud)
双重打印的原因是,您在{}内打印并使用1.1表示true,awk的默认行为是打印.
awk -v l="$lnr" 'FNR==l{ sub($1,$1 + 1)}1' $FILE
Run Code Online (Sandbox Code Playgroud)