用越来越多的数字替换重复的短语

用越来越多的数字替换重复的短语

您好,我正在寻找一个命令行解决方案,以用升序值替换每行中的“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

前面! :-)

相关内容