#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