Intereting Posts
Сортировка не использует естественный порядок Как очистить содержимое файла журнала ретрансляции в оболочке? Захват последнего возвращаемого значения в Unix Типичные текстовые файлы, присутствующие во всех (большинстве) системах GNU / Linux? Пароль для полного шифрования диска не принят при загрузке Почему моя камера не появляется в / dev, хотя она работает в dmesg? (Возможная регрессия Ubuntu.) Каков рекомендуемый способ запуска службы в качестве пользователя без полномочий root? После обновления кнопка X в заголовке больше не закрывает xterm Отключить оболочку пользователя по соображениям безопасности В чем разница между «расширением» и «замещением» в терминах терминологии оболочки? xrandr: откуда берется выход VIRTUAL1? Как использовать rsync? : Крупные резервные копии проектов через общий ресурс NFS Как удаленно выйти из сеанса xfce из ssh? Безопасность CUPS и принтера btrfs – недостающее пространство, что его берет?

Странное поведение скрипта Bash с echo-printf в файле

Я хочу распечатать часть содержимого файла CSV в другом файле, если есть совпадение с некоторым условием:

Содержимое csv похоже на это

abc test;ABCtest.it xyz test;XYZtest.com 

Я прочитал содержимое в переменной, и я grep его для некоторой строки

 csvContent=$(<$file.csv) csvRow="$(echo "$csvContent" | grep -i "abc test")" IFS=';' read -a array <<< "$csvRow" name="${array[0]}" url="${array[1]}" echo -ne "\n$url,$name" >> "$outputDir/$fileName" 

Но выходной файл не содержит URL-адрес

Если я попробую это

 echo $url 

он печатается на терминале!

Я пробовал также с printf и с жестко закодированным именем, но ничего!

 printf '%s %s\n' "$url" "$name" >> test.txt 

Похоже, что когда я пытаюсь соединить другую вещь (переменную или строку) после переменной $ url, часть ее удаляется или перезаписывается в выходной файл

Например, если я попытаюсь с этим

 printf '%s %s\n' "$url" "pp" >> test.txt 

Что я получаю с простым cat test.txt:

  pptest.it 

это как если бы часть его была перезаписана пустым пустым пространством

содержимое переменной $ url должно быть ABCTest.it

это очень странно

У вас есть возвраты каретки в концах строк в файле file.csv , и поэтому они считываются в вашу переменную url . Итак, когда вы его выписываете, за URL-данными следует возврат каретки и перезаписывается последующими данными.

Если это стандартный CSV-файл, подобный этому

 col1,col2,abc test;ABCtest.it,col4,col5 col1,col2,xyz test;XYZtest.com,col4,col5 

Вы можете использовать cut или, вероятно, awk.

grep -i "abc test" <filename.csv> | cut -f3 -d',' | cut -f2 -d';'