我正在尝试使用一个大文本文件,将用括号括起来的数据放在一行上。目前它被分成多行......
它看起来像什么:
(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
这使用范围运算符(“..”)捕获在(并包括)左括号和右括号之间看到的任何内容。一旦检测到右括号,就会打印数组内容并清除数组以供下一个周期使用。