как удалить разрыв строки с помощью awk или sed? - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь удалить разрыв строки из 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 ]

2 голосов
/ 23 апреля 2019

Делая множество предположений, вы можете просто захотеть:

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 голосов
/ 23 апреля 2019
awk -F \| '{c+=NF}c<6{ORS=""}c>=6{ORS=RS;c=0}1' file

будет предполагать, что ваш | отдельный файл содержит 6 столбцов в записи.

1 голос
/ 23 апреля 2019

, если данные в файле 'd', опробованы на GNU sed,

с точки зрения номера строки

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

с точки зрения шаблона

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