繰り返されるフレーズを増加する数字に置き換える

繰り返されるフレーズを増加する数字に置き換える

こんにちは、各行の「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

フロント! :-)

関連情報