删除空格时展开段落

Unwrap paragraphs while deleting spaces

我在尝试弄清楚如何使用 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 工具可以做到这一点?

谢谢

如果其后跟 26 spaces:

,这将切断换行符
awk '{printf "%s",(/^                          /?[=10=]:RS [=10=])}' file

您是否也想删除 26 space?

awk '{printf "%s",(/^                          /?[=11=]:RS [=11=])}' 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 spaces.

开头,则删除换行符和 6 space
cat file
data here
      more data
      not here
but this is new line
so i this

这里是一个完整的awk 顶部没有空行,正确的结尾。

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

重写代码:

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

如果 {5}(space 的数量)不起作用,请尝试将 --re-interval 添加到您的 awk 命令,或者只使用 [=36 的数量=]你需要的。

使用 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