Удалите пробел и новую строку из файла CSV с помощью сценария оболочки и сохраните его в том же или другом файле - PullRequest
2 голосов
/ 31 марта 2020

Я импортирую файл CSV и сохраняю детали этого файла в базе данных с помощью сценария оболочки (. sh файл)

В файле CSV один столбец содержит несколько URL-адресов изображений, и это разделены знаком «|». Но детали имеют пробелы и разрывы строк. Мне нужно удалить то же самое и загрузить данные в базу данных без разрыва строки.

Значения в столбце, как показано ниже,

http:///url/385924/pictures/THIRDPARTY|http://url/385924/pict
ures/THIRDPARTY|http://url/385924/pictures/b2af65b2-4d12-45dd-87a8- 
0ebc0c32c8e8-THIRDPARTY|http://url/THIRDPARTY|http://url.windo
ws.net/pictures/85eb568b-7908-49b2-9d91-4f762077323b- 
THIRDPARTY|http://url/vehicles/385924/THIRDPARTY

Мне нужно это без пробелов и новой строки как

http:///url/385924/pictures/THIRDPARTY|http://url/385924/pictures/THIRDPARTY|http://url/385924/pictures/2af65b2-4d12-45dd-87a8-0ebc0c32c8e8-THIRDPARTY|http://url/THIRDPARTY|http://url.windows.net/pictures/85eb568b-7908-49b2-9d91-4f762077323b-THIRDPARTY|http://url/vehicles/385924/THIRDPARTY

Мой код указан ниже,

FILE1="/filepath/file.csv
File2 = "/filepath/newfile.csv"
sed ':a;N;$!ba;s/\n//g' $FILE1 > '/filepath to new file/newfile.csv'
FILE2="/filepath to new file/newfile.csv'"

mysql -u username -ppassword database name  -Bse "LOAD DATA LOCAL INFILE '"$FILE2"' INTO TABLE tablename FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (@ignore ,id,imagename,@ignore ,@ignore  ,@ignore ,@ignore ,@ignore ,@ignore ,@ignore);"

При использовании только sed ':a;N;$!ba;s/\n//g' $FILE1, в терминале я получаю данные в CSV-файле без пробелов и новых линия. Если я заменил ':a;N;$!ba;s/\n//g' на ':a;N;$!ba;s/\n/---/g', это также отражается в терминале. Результаты не сохраняются в текущем файле CSV или при сохранении в новом файле CSV.

Как выполнить действия sed, а затем сохранить его в том же файле CSV или в новом файле CSV и использовать это в LOAD DATA LOCAL INFILE.

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 31 марта 2020

Почему бы не использовать это?

sed -z 's/ *\n//g' yourfile

Параметры -z позволяют редактировать файл как одну строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...