Преобразуйте CRLF's в переводы строки на Linux

Что лучший способ состоит в том, чтобы преобразовать CRLF's в переводы строки в файлах на Linux?

Я видел команды sed, но есть ли что-либо более простое?

34
задан 04.04.2017, 15:49

8 ответов

Используйте эту команду:

fromdos yourtextfile

Наоборот:

todos yourtextfile

Эти команды найдены в tofrodos пакете (на новых дистрибутивах), который также обеспечивает эти две обертки unix2dos и dos2unix, которые подражают старым инструментам Unix того же имени.

40
ответ дан 07.12.2019, 09:01
  • 1
    +1, Намного более полезный, чем в настоящее время проголосовавшееся вершине "Использование dos2unix" ответ. – Jonik 07.10.2009, 13:00

Использовать dos2unix.

dos2unix - DOS/MAC к преобразователю форматов текстового файла UNIX

dos2unix  [options] [-c convmode] [-o file ...] [-n infile outfile ...]

Options:
          [-hkqV] [--help] [--keepdate] [--quiet] [--version]
24
ответ дан 07.12.2019, 09:01
  • 1
    и unix2dos для наоборот. – quack quixote 07.10.2009, 08:41
  • 2
    , Вы могли следовать за мной? Не то, чтобы я не мог ценить его со всем upvotes. – Ryan C. Thompson 07.10.2009, 09:19
  • 3
    , я - ~quack., объявляют "~" как "нет". :) но не, не после Вас, tho я, действительно кажется, часто сталкиваюсь с Вами. – quack quixote 07.10.2009, 10:55
  • 4
    Рассмотрите разработку о том, как получить эту утилиту для Вашей системы Linux. По крайней мере, на Ubuntu это не установлено по умолчанию (но путем установки tofrodos пакета, Вы получаете что-то очень похожее: packages.ubuntu.com/jaunty/tofrodos). – Jonik 07.10.2009, 12:33

Я делаю это на Bash:

cat cr_stuffed.file | tr -d \r > no_more_crs.file
9
ответ дан 07.12.2019, 09:01
  • 1
    . я видел другое упоминание о TR ранее сегодня. это не программа, которая упоминается, очень часто это? – quack quixote 08.10.2009, 02:46

Я предпочитаю жемчуг:

perl -lne 's/\r//g; print' winfile.txt > unixfile.txt

Но это является подходящим к моему использованию, и для меня очень легко помнить. Не все системы имеют команду dos2unix, но большинство, что я продолжаю работать, имеют интерпретатор жемчуга.

Другой - перекод, мощная замена для dos2unix и iconv; это доступно в пакете "перекода" в репозиториях Debian:

recode ibmpc..lat1 winfile.txt   # dos2unix
recode lat1..ibmpc unixfile.txt  # unix2dos

Для awk вентиляторов:

awk '{ sub("\r$", ""); print }' winfile.txt > unixfile.txt

... и sed:

sed 's/\r$//' winfile.txt > unixfile.txt

И теперь, only slightly-less-convoluted, чем удаление CR's вручную в Hex-редакторе, прямо от одного из наших друзей stackoverflow.com, применимых с интерпретатором говядины (расположенный на Вашем дружественном окружении репозиторий Debian),

dos2unix в brainfuck!

,[[->+>+<<]>>>,[<-------------[+++++++++++++.>>>]<[>>----------[>+++++++++++++.-------------]<++++++++++>]<<<<[-]>>>[-<<<+>>>]]<[-]<[-]<]++++++++++.

большое спасибо jk для траты часа его жизни для записи этого!

20
ответ дан 07.12.2019, 09:01
  • 1
    (бесполезное использование кошки и) жемчуг является столь же сложным как sed... таким образом Вы действительно не отвечаете на вопрос, а скорее собираетесь, репутация "лучший способ" :) – akira 07.10.2009, 09:28
  • 2
    субъективна. это работает лучше всего на меня (я - тонны, более довольные жемчугом, чем sed). я не обещал, что это будет работать лучше всего на Вас. – quack quixote 07.10.2009, 09:32
  • 3
    @akira: вопрос может иметь несколько действительных ответов. Я использую этот метод также, иногда, главным образом в сочетании с другими изменениями, таким образом, это - определенно действительный ответ; но "используют dos2unix", определенно более практический ответ в большинстве ситуаций. Таким образом, я думаю, что оценки прекрасны. – reinierpost 07.10.2009, 12:47
  • 4
    @akira: при нахождении этого более простым отправьте его как ответ и просветите остальную часть нас. – quack quixote 07.10.2009, 13:31
  • 5
    ~quack: это - точка: это не более просто. это - то же для Вашего ответа жемчуга. u2d или fromdos/todos являются правильными ответами, потому что они более просты, чем какой-либо материал, выраженный на любом другом языке программирования. – akira 07.10.2009, 14:22

Я думаю, что можно использовать tr, также (хотя у меня нет забавных файлов формата, на которых можно попробовать):

tr -d '\r' < file1 > file2
7
ответ дан 07.12.2019, 09:01

В vi или Vim:

:%s/^V^M//g
4
ответ дан 07.12.2019, 09:01

Если Вы хотите метод GUI, попробуйте текстовый редактор Kate (другие усовершенствованные текстовые редакторы могут обрабатывать это также). Откройте находку / диалоговое окно Замены (Ctrl+R) и замена \r\n с \n. (NB: необходимо будет выбрать "Regular expression" из выпадающего и отменить выбор "Выбора только" от опций.)

Править: Или, если Вы просто хотите преобразовать в формат Unix, затем используйте пункт меню Tools > End of Line > Unix.

1
ответ дан 07.12.2019, 09:01
  • 1
    Существуют текстовые редакторы, такие как jEdit, который может сделать эти преобразования автоматически - Вы просто говорите его, если Вы хотите Unix, Windows или разделители строки Mac. ссылка – Jonik 07.10.2009, 13:24
  • 2
    На самом деле KATE может сделать это также через Инструменты> Конец меню Line. Возможно, я должен был думать более со стороны, чем ответ на вопрос точно, поскольку он был сформулирован - но если Вы знаете, что конкретно хотите преобразовать \r\n кому: \n затем использование поиска/замены легче, чем запоминание который использование ОС который окончание строки. ;) – DisgruntledGoat 11.10.2009, 02:22

Я предпочитаю Vim и :set fileformat=unix. В то время как не самое быстрое, это действительно дает мне предварительный просмотр. Это особенно полезно в случае файла со смешанными окончаниями.

3
ответ дан 07.12.2019, 09:01

Теги

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