Как конвертировать текстовые файлы в Bash?(от foo.txt до bar.txt) - PullRequest
1 голос
/ 12 сентября 2011

Я пытаюсь добавить через bash один текстовый файл в другой, используя foo.txt >> bar.txt. Проблема в том, что foo.txt - текстовый файл Windows (я думаю), потому что однажды добавлен в bar.txt

every new^M
line^M
ends^M
like this.^M

Таким образом, это, безусловно, два разных типа файлов.

Я искал в Google ответы, но Google не принимает специальные символы, такие как ">>" и "^", в поиске . Самое близкое решение, которое я могу найти, - это решение, о котором сообщается на commandlinefu.com , но все, что он делает, это убирает r из bar.txt, что, на самом деле, вообще не является решением.

Итак, у меня здесь два вопроса:

  1. Как узнать, используя bash, что такое файл типа foo.txt?
  2. Как правильно преобразовать foo.txt, чтобы его можно было добавить в bar.txt?

Ответы [ 6 ]

5 голосов
/ 12 сентября 2011
sed 's/$'"/`echo \\\r`/" foo.txt >> bar.txt

или используйте dos2unix, если доступно.

5 голосов
/ 12 сентября 2011

Преобразовать окончания строки Windows с помощью dos2unix:

dos2unix foo.txt
4 голосов
/ 12 сентября 2011
  1. file foo.txt выведет: «ASCII-текст с символами конца строки CRLF», если файл имеет окончания строки в стиле DOS.
1 голос
/ 12 сентября 2011

Используйте fromdos и todos или unix2dos и dos2unix.

0 голосов
/ 13 сентября 2011

Быстрое и грязное решение:

tr -d '\r' < foo.txt
0 голосов
/ 12 сентября 2011

Посмотрите команды dos2unix и unix2dos. Вы можете сначала сделать копию (cp)

...