Using sed to remove new line characters from the middle of a field
我拥有的数据看起来像这样
1 2 3 4 | a,b,c,d a,b1 b2,c,d A,B,C,D |
正在发生的事情是,在字段2中偶尔在第二个字段中有一个换行符,因此该行被分成了两行
到目前为止,我已经找到了一个sed脚本,它将像
所示进行此操作
1 2 | cat file| sed ':a;N;$!ba;s/\\(\\(b1\\)\\)\ /\\1/g' |
但是我正在努力获取(。*,)的正确组合以使此工作正常进行,因此我已将其替换为b1以使此示例正常工作,但在现实世界中,A,B,C和D为实地长度和含量的混合
我正在寻找的最终结果是这个
1 2 3 | a,b,c,d a,b1b2,c,d A.B,C,D |
非常感谢您的帮助
谢谢
马特
我这里有一个尚不完美的解决方案-但我会进一步考虑。如果您的
1 2 3 | cat file | sed -r ':a;N;$!ba;s/((^|\ )([^,]+,){0,2}[^,]+)\ /\\1/g' |
如果在前三列之一中有换行符,这将起作用。到目前为止,它还不能与"行"中的多个换行符一起使用。
说明:
)
尾随
总结了
在awk中
1 | awk -F, 'NF < 4 {getline nextline; $0 = $0 nextline} 1' filename |