Ответ 1
Я не уверен, как echo
может dos2unix
символы ^M
но вы можете удалить их, запустив dos2unix
в вашем файле, например:
dos2unix /cust/vivek.txt
У меня есть сценарий оболочки Unix, который делает следующее:
Теперь в # 2, если я вставлю текст, ^ M будет добавлен во все строки файла.
Например:
echo " a" >> /cust/vivek.txt
echo " b" >> /cust/vivek.txt
vi vivek.txt
abc^M
bcd^M
a^M
b^M
Есть ли способ избежать этого?
Я не уверен, как echo
может dos2unix
символы ^M
но вы можете удалить их, запустив dos2unix
в вашем файле, например:
dos2unix /cust/vivek.txt
^M
- возврат каретки и обычно наблюдается при копировании файлов из Windows. Использование:
od -xc filename
который должен дать список низкого уровня того, как выглядит ваш файл. Если файл не поступает из Windows, то другой возможностью является то, что настройки вашего терминала не переводятся правильно. Проверьте правильность переменной среды TERM.
Если файл появился из Windows, используйте dos2unix
или dos2unix
sed 's/\r//' file > file.new
Я подозреваю, что это может быть артефактом ваших настроек vi, а не конкатенацией.
Что значит
cat -v -e filename
показать? Эта команда выгрузит ваш файл и пометит контрольные символы, чтобы он мог понять, что действительно в вашем файле. См. Также этот вопрос/вопрос для суперпользователя.
^ M - метасимволы, которые вошли в ваш файл, когда он использовался в окнах.
команда dos2unix может это исправить.
dos2unix <filename>
Только
sed -e "s/\r//g" file
работал на меня