如何删除与awk或sed的断线?

问题描述 投票:-1回答:3

我正在尝试从csv文件中删除换行符

1 2010-01-08|2010|00360| PAPELETAS DE TRÁNSITO|.000|13.680
2 2010-01-08|2010|00367|30%) DEL ÁREA TOTAL DEL <--here
 LOCAL, MÓDULOS, STANS|.000|36.000
3 2010-01-08|2010|00384|EXTERIOR (VÍA PÚBLICA)/DERECHO DE TRAMITACIÓN|.000|6.840

我的csv有6列用“|”分隔我想做一行,但是当从数据库导出时,我在第2行有一个换行符

linux unix awk sed terminal
3个回答
2
投票
awk -F \| '{c+=NF}c<6{ORS=""}c>=6{ORS=RS;c=0}1' file

假设您的|分隔文件在记录中包含6列。


2
投票

做出很多假设,你可能只想要:

awk 'NF==6{ print; next}  {getline x; $0 = $0 x } 1' FS=\| input

这可以简化为:

awk 'NF < 6 {getline x; $0 = $0 x } 1' FS=\| input

或者(如果您可能想连续加入超过2行)

awk '{while(NF < 6) {getline x; $0 = $0 x }} 1' FS=\| input

这些都是非常脆弱的解决方案。读者应该收到警告。


1
投票

如果'd'文件中的数据,试过gnu sed,

就行号而言

sed '2{N;s/\n//}' d

在模式方面

sed -E '/^([0-9][^|]+\|){3,}\S+(\s+[A-Za-z/(.,)]+)+/{N;s/\n//}' d
© www.soinside.com 2019 - 2024. All rights reserved.