昇順文字がありますか? (\n の逆)

昇順文字がありますか? (\n の逆)

そこにライジングキャラクターがありますかawk?私は次のようなものを見つけました。ここしかし、うまくいきません。

次の場合:

97
ARE
3
NL
1303
1
140
USA

履歴が数値でない場合は、次のように印刷する必要があります。

97,ARE
3,NL
1303
1
140,USA

ベストアンサー1

カーソルを移動しようとするよりも、プログラムでこの問題を処理する方が良いと思います。

awk '/^[[:digit:]]+$/ { if (length(prev) > 0) { print prev }; prev = $0 } !/^[[:digit:]]+$/ { print (length(prev) > 0 ? prev : "") "," $0; prev = ""} END { if (length(prev) > 0) { print prev } }'

所望の出力が生成される。前の行を記憶し、prev次の行に数字の内容があるかどうかに応じて単独で印刷するか、カンマと現在の行を一緒に印刷します。

以下は、わかりやすくフォーマットされたAwkの一部です。

/^[[:digit:]]+$/ {
    if (length(prev) > 0) {
        print prev
    }
    prev = $0
}
!/^[[:digit:]]+$/ {
    print (length(prev) > 0 ? prev : "") "," $0
    prev = ""
}
END {
    if (length(prev) > 0) {
        print prev
    }
}

本当にキャラクターレベルを上げたいなら確認してみてください。tputそしてterminfoエスケープシーケンス:

tput cuu1

カーソルを1行上に移動します。

おすすめ記事