こんにちは、各行の「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
フロント! :-)