您好,我正在寻找一个命令行解决方案,以用升序值替换每行中的“1”值。我的输入看起来像:
K X 1
K X 1
K X 1
K X 1
K X 1
K X 1
K X 1
K X 1
K X 1
K X 1
我希望输出是
K X 1
K X 2
K X 3
K X 4
K X 5
K X 6
K X 7
K X 8
K X 9
K X 10
任何帮助将非常感激。
谢谢
答案1
这可能是一个选项awk
:
$ awk '$3 = $3+i++' file
K X 1
K X 2
K X 3
K X 4
K X 5
K X 6
K X 7
K X 8
K X 9
K X 10
答案2
如果您希望输入行按顺序重新编号,可以使用 awk记录编号,NR
前任。
awk '{printf "%s%4s%4d\n", $1, $2, NR}' input
答案3
我的 Bash 解决方案(未经测试,假设 K 和 X 不包含空格):
i=1
while read a b c
do
echo $a $b $i
i=$((i+1))
done < inputfile
正确的输出格式留给读者作为练习。
答案4
$ awk '$3=NR' file
K X 1
K X 2
K X 3
K X 4
K X 5
K X 6
K X 7
K X 8
K X 9
K X 10
前面! :-)