如何将括号内的数据放在一行上?

如何将括号内的数据放在一行上?

我正在尝试使用一个大文本文件,将用括号括起来的数据放在一行上。目前它被分成多行......

它看起来像什么:

(123456
'abcdef'
'a1b2c3d4'
'1234567890'
0)
(789012
'zyxwv'
'987gha871'
'987654828'
0)

我需要让它看起来像什么:

(123456 'abcdef' 'a1b2c3d4''1234567890' 0)
(789012 'zyxwv''987gha871''987654828' 0)

尝试使用 sed 语句来解决这个问题,但运气不佳。有什么想法吗?

谢谢!!

答案1

awk解决方案:

awk '{ printf "%s%s",$0,($0~/\)$/)? ORS:FS }' file

输出:

(123456 'abcdef' 'a1b2c3d4' '1234567890' 0)
(789012 'zyxwv' '987gha871' '987654828' 0)

答案2

A珀尔解决方案:

perl -nle 'if (/\(/../\)/) {push @a,$_;if (m/\)/) {print "@a";@a=()}}' file

这使用范围运算符(“..”)捕获在(并包括)左括号和右括号之间看到的任何内容。一旦检测到右括号,就会打印数组内容并清除数组以供下一个周期使用。

相关内容