dai*_*ain 4 sed awk text-processing newlines
我有一些数据看起来像这样:
abc
123
456
789
def
111
222
333
ghi
999
888
777
666
Run Code Online (Sandbox Code Playgroud)
即记录由多个换行符分隔,但位置错误。我想要的是这样得到它:
abc
123
456
789
def
111
222
333
ghi
999
888
777
666
Run Code Online (Sandbox Code Playgroud)
我尝试在 awk 中设置RS
为\n\n\n
,但最终导致记录被错误地切割;该abc
术语最终作为前一个记录的最后一个字段,而不是当前记录的第一个字段。
我也不知道如何使用sed
它,因为它是逐行工作的。
尝试
awk '!NF {next} /[^0-9]/ {printf XRS; XRS = ORS} 1' file2
abc
123
456
789
def
111
222
333
ghi
999
888
777
Run Code Online (Sandbox Code Playgroud)
它删除空行(我从你的规范中读到这些确实是空的,没有空格等),然后检查是否有任何非数字,指示记录标题,为其打印换行符,除了第一个得到空字符串。
在每个 Unix 机器上的任何 shell 中使用任何 awk:
$ awk '/[^0-9]/ && NR>1{print ""} NF' file
abc
123
456
789
def
111
222
333
ghi
999
888
777
666
Run Code Online (Sandbox Code Playgroud)