Unix sed не умеет читать. специфическая проблема при использовании переменной

0

Одна строка в контрольном файле выглядит так: 1039 ZA_BKPF_20170725103534.txt Таким образом, используя пробел в качестве разделителя, я обрезаю и присваиваю только имя файла переменной, как показано ниже: файл = echo "$line" | cut -d " " -f2

и тогда я использую sed: sed -i 1d "$ targetDir" / "$ file"

но в журнале я получаю сообщение об ошибке ниже: Я также сделал эхо, чтобы подтвердить, существует ли файл. Как видите, файл существует. но sed говорит, что нет такого файла или каталога.

  • Файл = $ 'ZA_BKPF_20170725103534.txt \ г'
  • echo '/u/applic/data/hdfs1/etl_grmacw/ACDW/source/ZA/ZA_BKPF_20170725103534.txt существует' /u/applic/data/hdfs1/etl_grmacw/ACDW/source/ZA/ZA_BKPF_20170725103534.txt существует
  • sed -i 1d $ '/ u / Applic / data / hdfs1 / etl_grmacw / ACDW / source / ZA / ZA_BKPF_20170725103534.txt \ r' sed: не могу прочитать

Кто-то знаком с $ 'string \ r'. почему это происходит с моими переменными. Это проблема или что-то еще? Может кто-нибудь помочь мне, пожалуйста! Спасибо, Хари Г

Hari Gopinath
источник
2
Похоже, что ваш контрольный файл в формате Windows. $'...' Формат используется только для отчетности, чтобы показать, что в переменной есть символ возврата (0x0D). Ты можешь использовать tr отфильтровать это,
AFH
1
... или использовать dos2unix на входной файл, чтобы очистить его.
xenoid