Преобразование CRLF в ленты строк в Linux

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

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

30
задан karel
21.12.2022 17:44 Количество просмотров материала 3205
Распечатать страницу

10 ответов

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

fromdos yourtextfile

иначе:

todos yourtextfile

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

37
отвечен avelldiroll 2022-12-23 01:32

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

dos2unix-DOS / MAC в Unix конвертер текстовых файлов

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

Options:
          [-hkqV] [--help] [--keepdate] [--quiet] [--version]
22
отвечен Ryan Thompson 2022-12-23 03:49

предпочитаю perl:

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

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

другое recode, мощная замена для dos2unix и iconv; он доступен в пакете "recode" в репозиториях 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

и теперь, только немного менее запутанный, чем удаление CR вручную в шестнадцатеричном редакторе, прямо из один из наших stackoverflow.com друзья, полезной с говядина interpreter (расположен в дружественном репозитории Debian),

dos2unix in brainfuck!

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

большое спасибо jk за тратить час своей жизни, чтобы написать это!

19
отвечен quack quixote 2022-12-23 06:06

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

cat cr_stuffed.file | tr -d \r > no_more_crs.file
7
отвечен JustJeff 2022-12-23 08:23

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

tr -d '\r' < file1 > file2
6
отвечен warren 2022-12-23 10:40

Я нашел очень простой способ ... открыть файл с Nano: # # nano файл.txt

нажмите Ctrl+O для сохранения, но перед нажатием Enter нажмите: Alt+D для переключения концовок строк между DOS и Unix/ Linux, или: Alt+M для переключения между окончаниями строк на Mac и Unix / Linux затем нажмите Enter для сохранения и Ctrl+X для выхода.

4
отвечен Stefan Sjöberg 2022-12-23 12:57

в vi или Vim:

:%s/^V^M//g
3
отвечен fpmurphy1 2022-12-23 15:14

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

2
отвечен opello 2022-12-23 17:31

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

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

1
отвечен DisgruntledGoat 2022-12-23 19:48

вставить в dos2unix.py скрипт Python.

#!/usr/bin/env python
"""\
convert dos linefeeds (crlf) to unix (lf)
usage: dos2unix.py <input> <output>
"""
import sys

if len(sys.argv[1:]) != 2:
  sys.exit(__doc__)

content = ''
outsize = 0
with open(sys.argv[1], 'rb') as infile:
  content = infile.read()
with open(sys.argv[2], 'wb') as output:
  for line in content.splitlines():
    outsize += len(line) + 1
    output.write(line + '\n')

print("Done. Saved %s bytes." % (len(content)-outsize))

должно работать на любой платформе с установленным Python. Общественное достояние.

1
отвечен anatoly techtonik 2022-12-23 22:05

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх