在删除空格的同时展开段落

问题描述 投票:0回答:2

我在尝试弄清楚如何使用 sed、tr 等更改文件格式时遇到了令人沮丧的结局。我确信有一些正确的答案可以做我想做的事,我只是不知道什么是的。

这是我的问题。 我有一个如下所示的数据文件:

   8587  812.700  152.791  12.7410   0.0372  99.9999   9.9999  12.2520   0.0436  99.9999   9.9999  99.9999   9.9999  99.9999   9.9999
                           99.9999   9.9999  99.9999   9.9999  99.9999   9.9999  99.9999   9.9999  99.9999   9.9999  99.9999   9.9999
                           99.9999   9.9999  99.9999   9.9999  99.9999   9.9999  13.1942   0.0589  99.9999   9.9999  99.9999   9.9999
                           99.9999   9.9999  12.9601   0.1323  99.9999   9.9999   1.0337   0.3166

我想把它变成一行。 每个文件中大约有 10,000 个这样的块。 我想我想剪掉任何换行符,后跟 26 个空格,这样就可以完成工作,并将换行符保留在下一个块的位置。

那么,有什么方便的 Linux 工具可以做到这一点吗?

谢谢

linux sed tr
2个回答
1
投票

如果后面跟着

26
空格,则会剪切换行符:

awk '{printf "%s",(/^                          /?$0:RS $0)}' file

您是否也想删除

26
空格?

awk '{printf "%s",(/^                          /?$0:RS $0)}' file | awk '{gsub(/                          /,"")}1'
   8587  812.700  152.791  12.7410   0.0372  99.9999   9.9999  12.2520   0.0436  99.9999   9.9999  99.9999   9.9999  99.9999   9.9999 99.9999   9.9999  99.9999   9.9999  99.9999   9.9999  99.9999   9.9999  99.9999   9.9999  99.9999   9.9999 99.9999   9.9999  99.9999   9.9999  99.9999   9.9999  13.1942   0.0589  99.9999   9.9999  99.9999   9.9999 99.9999   9.9999  12.9601   0.1323  99.9999   9.9999   1.0337   0.3166

另一个例子:
如果下一行以 6 个空格开头,请删除换行符和 6 个空格。

cat file
data here
      more data
      not here
but this is new line
so i this

这里全部合一

awk
,顶部没有空行,并且结尾正确。

awk '{split($0,a,"     ")} NR==1 {a[2]=$0} {printf "%s",(/^      /||NR==1?a[2]:RS $0)}END{print ""}' file
data here more data not here
but this is new line
so i this

重写的代码:

awk '{printf "%s",(gsub(/ {5}/,"")||NR==1?$0:RS $0)} END {print ""}' file
data here more data not here
but this is new line
so i this

如果

{5}
(空格数)不起作用,请尝试将
--re-interval
添加到您的
awk
命令中,或者仅使用您需要的空格数。


0
投票

使用 GNU awk 实现多字符 RS:

$ gawk -vRS='^$' -vORS= '{gsub(/\n {26}/,"")}1' file
   8587  812.700  152.791  12.7410   0.0372  99.9999   9.9999  12.2520   0.0436  99.9999   9.9999  99.9999   9.9999  99.9999   9.9999 99.9999   9.9999  99.9999   9.9999  99.9999   9.9999  99.9999   9.9999  99.9999   9.9999  99.9999   9.9999 99.9999   9.9999  99.9999   9.9999  99.9999   9.9999  13.1942   0.0589  99.9999   9.9999  99.9999   9.9999 99.9999   9.9999  12.9601   0.1323  99.9999   9.9999   1.0337   0.3166
© www.soinside.com 2019 - 2024. All rights reserved.