@zradeg

Есть ли корректный способ обрабатывать тексты к кириллицей посредством awk?

Есть два файла: country.csv и president.csv
country.csv имеет два столбца: 1)Название страны; 2) Население
president.csv тоже два столбца: 1)Название страны; 2)Имя ее президента
В качестве разделителя используется точка с запятой.

Надо получить третий файл (или дописать колонку в первый - не суть), где в одной строке будут находиться все три поля: Название страны; Количество населения; Имя президента.
Количество строк в файлах разное, т.е. некоторых стран может не быть как в первом так и во втором файле, т.е. просто отсортировать и затем вслепую присоединить столбец не получится. Необходимо именно по значению первой ячейки первого файла найти строку с этим значением во втором файле и взять значение из второй колонки этой строки.

Пытаюсь сделать это подобным скриптом:
#!/bin/bash
                                                     
while read LINE; do
        C_NAME=$(echo $LINE | cut -d";" -f1)
        awk -v country=$C_NAME -v line=$LINE -F";" '$1 == country {print line";"$2}' president.csv >>result.csv
done < country.csv

И получаю сообщение об ошибке:
awk: cmd. line:1: Албания
awk: cmd. line:1: ^ invalid char '�' in expression


Как выйти из ситуации?

P.S. Забыл упомянуть, что оба файла уже в utf-8!
  • Вопрос задан
  • 389 просмотров
Решения вопроса 1
DevMan
@DevMan
ваш код корректный, затык скорее всего в данных.
если зальете csv куда–нить можно будет глянуть подробнее.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
adugin
@adugin
iconv -f cp1251 -t utf8 president.csv | awk ...
Ответ написан
fzfx
@fzfx
18,5 дм
убедитесь, что ваш csv-файл без BOM.
Ответ написан
Комментировать
@zradeg Автор вопроса
Всему виной была моя невнимательность и... некорректный символ завершения строки! \r\n вместо \n
Прошу прощения и благодарю всех, проявивших интерес к проблеме!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы