输入:
[5 8 15 79 5 6
.
.
.
n 8 6 4 5 ]
[18 78 18 79 5 6
.
.
.
n 8 6 78 ]
依旧......
期望的输出:
[5 8 15 79 5 6 . . . . 8 6 4 5 ]
[18 78 18 79 5 6 . . . 8 6 78 ]
我需要将所有列转换为]
到一行,并继续这样做直到文件末尾。
答案 0 :(得分:1)
听起来您只想在当前行以]
结尾时才打印换行符。尝试:
awk '{printf "%s%s", $0, match($0,"]\\s*$") ? "\n" : ""}' input
答案 1 :(得分:1)
使用sed:
$ sed ':a;N;/\]/!ba;s/\n//g' infile
[5 8 15 79 5 6 . . . n 8 6 4 5 ]
[18 78 18 79 5 6 . . . n 8 6 78 ]
说明:
:a # Label to jump to
N # Append next line to pattern sapce
/\]/! ba # If there is no "]", jump to label
s/\n//g # Remove all newlines (only reached if "]" in pattern space)
如果您想确保]
是该行中的最后一个非空白字符,而不仅仅是其中的任何位置,则可以将正则表达式从/\]/
更改为/\][[:blank:]]*$/
,导致
sed ':a;N;/\][[:blank:]]*$/!ba;s/\n//g' infile