0

次の形式のデータがあります

45280550 45280550 45280550 45280550 45280550 45280550 45280550 
45280550 45280550 45280550 45280550 45280550 45280550 45280550 
45280550 45280550 45280550 45280550 45280550 45280550 45280550 

45280550 45280550 45280550 45280550 45280550 45280550 45280550 
45280550 45280550 45280550 45280550 45280550 45280550 45280550 

45280550 45280550 45280550 45280550 45280550 45280550 45280550 

ここで、8 文字の 7 セットの後に改行文字があり、テキストのブロック間に改行文字もあります。

テキストのブロック内の改行を削除したいが、ブロック間のギャップを残して、最終的に次のようになります

45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550     45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 

45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 

45280550 45280550 45280550 45280550 45280550 45280550 45280550 
4

2 に答える 2

2
awk '{ printf("%s", NF ? $0 : "\n\n") } END { if(NF) print "" }' file

出力:

45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 

45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 45280550 

45280550 45280550 45280550 45280550 45280550 45280550 45280550 
于 2013-09-10T14:40:48.480 に答える
2

簡単な例を使用します。

$ cat file
1 2 3
4 5 6
7 8 9

1 2 3
4 5 6

1 2 3

以下はあなたの問題を解決します:

$ awk '{ORS=(NF?OFS:RS RS)}1' file
1 2 3 4 5 6 7 8 9 

1 2 3 4 5 6 

1 2 3 

説明:

出力レコード区切り記号は、出力ORS時にレコードを区切る方法を定義します。現在の行のフィールド数に応じて、またはの値を設定しますORS。デフォルトではスペースである出力フィールド区切り記号であり、デフォルトでは改行文字である入力レコード区切り記号です。末尾の 1 は、現在のレコードを出力するためのイディオムです。 OFSRS RSOFSRSawk

于 2013-09-10T14:38:42.077 に答える