awk:間違った場所で改行区切り文字を処理する

awk:間違った場所で改行区切り文字を処理する

次のデータがあります。

abc


123
456
789
def


111
222
333
ghi


999
888
777
666

つまり、レコードは複数行で区切られていますが、位置が間違っています。私が望むのは、次のようにすることです。

abc
123
456
789

def
111
222
333

ghi
999
888
777
666

awkで設定しようRSとしましたが、\n\n\n結果としてレコードが誤って切り捨てられました。そのabc用語は、現在のレコードの最初のフィールドではなく、以前のレコードの最後のフィールドで終わりました。

sedまた、1行ずつ動作するので、どのように使用するのかわかりません。

ベストアンサー1

努力する

awk '!NF {next} /[^0-9]/ {printf XRS; XRS = ORS} 1' file2
abc
123
456
789

def
111
222
333

ghi
999
888
777

空の行を削除します(あなたの仕様では、この行は実際には空で空白がないことを読みました)。次に、レコードヘッダを表す数字以外の数字があることを確認し、最初の行を除いて改行を印刷します。空の文字列。

おすすめ記事