![用越来越多的数字替换重复的短语](https://linux22.com/image/187288/%E7%94%A8%E8%B6%8A%E6%9D%A5%E8%B6%8A%E5%A4%9A%E7%9A%84%E6%95%B0%E5%AD%97%E6%9B%BF%E6%8D%A2%E9%87%8D%E5%A4%8D%E7%9A%84%E7%9F%AD%E8%AF%AD.png)
您好,我正在寻找一个命令行解决方案,以用升序值替换每行中的“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
前面! :-)