これはちょっと奇妙ですが、各オカレンスを現在のカウントに置き換えて他の文字をそのまま残して、文字 "N"のインスタンスをカウントしようとしています。例えば:文字を無視してbash列をカウントに変換する
N
N
-
-
N
-
-
N
N
N
はなるはずです。
1
2
-
-
3
-
-
4
5
6
は助けに感謝、既存の答えを見つけるために、このほかに記述するように見えることはできません。
これはちょっと奇妙ですが、各オカレンスを現在のカウントに置き換えて他の文字をそのまま残して、文字 "N"のインスタンスをカウントしようとしています。例えば:文字を無視してbash列をカウントに変換する
N
N
-
-
N
-
-
N
N
N
はなるはずです。
1
2
-
-
3
-
-
4
5
6
は助けに感謝、既存の答えを見つけるために、このほかに記述するように見えることはできません。
awk '{ if ($1=="N") {a++; print a} else {print} }' file
出力:
1 2 - - 3 - - 4 5 6
私はこれをゴルフに入れましたが、別の答えが必要であるとは思わないでしょう: 'awk' {print $ 1 ==" N "? ++ a:$ 1} '' –
ありがとう!魅力的な作品! –
[私の質問に誰かが答えたときにどうすればいいですか?](0120)をご覧ください: – Cyrus
試してみてください。(明確に示されているサンプルINPUT_FILEに基づく)
awk '/^N$/{sub(/N/,++i);}1' Input_file
だから、文字Nから始まる行をチェックし、その後に文字Nを代入置換が行われるたびに値が増加するiという名前の変数。次に、1を入力すると現在の行が出力され、Input_fileに言及します。
$ awk '{print (/N/?++c:$0)}' file
1
2
-
-
3
-
-
4
5
6
bash: 'declare -i a = 0; IFS = read -r行です。 do [[$ line == "N"]] && a = a + 1 && line = $ a; echo "$ line"; done
Cyrus