如何使用awk或sed删除中断线?

时间:2019-04-23 16:34:54

标签: linux unix awk sed terminal

我正在尝试从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行有一个换行符

3 个答案:

答案 0 :(得分:2)

awk -F \| '{c+=NF}c<6{ORS=""}c>=6{ORS=RS;c=0}1' file

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

答案 1 :(得分: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

或者(如果您想加入两个以上的连续行)

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

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

答案 2 :(得分:1)

如果“ d”文件中的数据已尝试使用gnu sed,

关于行号

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

关于模式

sed -E '/^([0-9][^|]+\|){3,}\S+(\s+[A-Za-z/(.,)]+)+/{N;s/\n//}' d