我的数据格式如下
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
在7组8个字符之后有换行符,并且在文本块之间也有换行符。
我想删除文本块中的换行符,但留下块之间的间隙,以便最终看起来像
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
答案 0 :(得分: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
的值设置为OFS
或RS RS
,具体取决于当前行的字段数。 OFS
是输出字段分隔符,默认情况下是空格,RS
是输入记录分隔符,默认情况下是换行符。尾部1只是一个awk
成语来打印当前记录。
答案 1 :(得分: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