Как удалить M разрывов строк до обычных разрывов строк в Shellscript в файле CSV

#linux #shell #unix #carriage-return

#linux #оболочка #unix #возврат каретки

Вопрос:

У меня есть файл CSV file1.csv

 Name age Id address country
X     12  3  aaa     Italy
Y     13  5  xxx      uk
...
  

У меня есть текстовый файл file2.txt тоже.

  Id 
3
4
5
...
  

На самом деле я отображал Id и country .
Используя эти два файла и отображая идентификатор и страну
Я попробовал этот код

 #!/bin/bash
CSV_FILE_PATH ="root/file1.csv"
Id_txt= 'file2.txt'

for Id in Id_txt
do
LINE $(grep ${Id},$CSV_FILE_PATH})
echo $LINE|awk -F ',''{print $3 "/t" $5}'
done
  

Я получаю вывод

 "3","italy" ^M "4","Uk" ^M "5"....
  

Комментарии:

1. вам придется преобразовать формат файла в unix. Откройте файл CSV в vim и введите set fileformat=unix (а затем сохраните с помощью :wq ). Есть другие способы добиться того же

2. Это большой файл CSV и есть ли какой-либо другой способ преобразовать файл. пожалуйста, помогите

3. посмотрите на dos2unix

4. Я не получил результат

5. Чтобы решить ваш реальный проект, прочитайте о join команде * nix. Удачи.

Ответ №1:

Если dos2unix $INPUT команда не работает, вы также можете использовать

  • tr -d 'r' < $INPUT > $OUTPUT
  • Или для редактирования на месте вы можете использовать sed -i 's/r$//g' $INPUT