gpt4 book ai didi

linux - 删除空格时展开段落

转载 作者:太空宇宙 更新时间:2023-11-04 03:43:32 24 4
gpt4 key购买 nike

我在尝试弄清楚如何使用 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 个这样的 block 。我想我想剪掉任何换行符,后跟 26 个空格,这样就可以完成这项工作,并将换行符保留在下一个 block 的位置。

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

谢谢

最佳答案

如果后面跟着 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 命令中,或者仅使用您需要的空格数。

关于linux - 删除空格时展开段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28957326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com