Объясните, что означает r $ [duplicate]

Если ваше исходное кодовое имя HelloWorld.java, ваш скомпилированный код будет HelloWorld.class.

Вы получите эту ошибку, если вы вызываете ее, используя:

java HelloWorld.class

Вместо этого используйте это:

java HelloWorld
173
задан devnull 10 July 2013 в 08:54
поделиться

16 ответов

Я предполагаю, что вы подразумеваете возврат каретки (CR, "\r", 0x0d) в конца строк, а не только слепо внутри файла (вы можете иметь их в середина строк за все, что я знаю). Использование этого тестового файла с CR только в конце первой строки:

$ cat infile
hello
goodbye

$ cat infile | od -c
0000000   h   e   l   l   o  \r  \n   g   o   o   d   b   y   e  \n
0000017

dos2unix - это способ, если он установлен в вашей системе:

$ cat infile | dos2unix -U | od -c
0000000   h   e   l   l   o  \n   g   o   o   d   b   y   e  \n
0000016

Если по какой-либо причине dos2unix недоступно для вас, тогда sed сделает это:

$ cat infile | sed 's/\r$//' | od -c
0000000   h   e   l   l   o  \n   g   o   o   d   b   y   e  \n
0000016

Если по какой-либо причине sed недоступно для вас, тогда ed будет сделайте это сложным способом:

$ echo ',s/\r\n/\n/
> w !cat
> Q' | ed infile 2>/dev/null | od -c
0000000   h   e   l   l   o  \n   g   o   o   d   b   y   e  \n
0000016

Если у вас нет любых этих инструментов, установленных на вашем поле, у вас есть больше проблем, чем попытки конвертировать файлов: -)

221
ответ дан paxdiablo 3 September 2018 в 17:59
поделиться

Если вы используете среду X и имеете правильный редактор (визуальный студийный код), тогда я буду следовать рекомендациям:

Код Visual Studio: как показать окончания строки

Просто перейдите в правый нижний угол экрана, визуальный код студии покажет вам как кодировку файла, так и конец строки, за которым следует файл, просто с простым щелчком вы можете переключить этот вокруг.

Просто используйте визуальный код в качестве замены для блокнота ++ в среде linux, и вы готовы к работе.

1
ответ дан 99Sono 3 September 2018 в 17:59
поделиться
5
ответ дан Alex Giotis 3 September 2018 в 17:59
поделиться

Еще раз решение ... Потому что всегда есть еще один:

perl -i -pe 's/\r//' filename

Это хорошо, потому что он на месте и работает в каждом вкусе unix / linux, с которым я работал.

6
ответ дан Chris G 3 September 2018 в 17:59
поделиться

Если вы используете ОС (например, OS X), у которой нет команды dos2unix, но есть интерпретатор Python (версия 2.5+), эта команда эквивалентна команде dos2unix:

python -c "import sys; import fileinput; sys.stdout.writelines(line.replace('\r', '\n') for line in fileinput.input(mode='rU'))"

Он обрабатывает оба именованных файла в командной строке, а также каналы и перенаправления, как dos2unix. Если вы добавите эту строку в ваш файл ~ / .bashrc (или эквивалентный файл профиля для других оболочек):

alias dos2unix="python -c \"import sys; import fileinput; sys.stdout.writelines(line.replace('\r', '\n') for line in fileinput.input(mode='rU'))\""

... при следующем входе в систему (или запустите source ~/.bashrc в текущем сеанс) вы сможете использовать имя dos2unix в командной строке так же, как в других примерах.

1
ответ дан Chris Johnson 3 September 2018 в 17:59
поделиться

Самый простой способ в Linux - это imho

    sed -i 's/\r//g' <filename>

. Сильные цитаты вокруг оператора замещения 's/\r//' существенны. Без них оболочка интерпретирует \r как escape + r и сводит ее к простой r и удаляет все нижние регистры r. Вот почему ответ, приведенный выше в 2009 году Rob , не работает.

И добавление модификатора /g гарантирует, что даже несколько \r будут удалены, и не только первый.

15
ответ дан Community 3 September 2018 в 17:59
поделиться

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

26
ответ дан Emil H 3 September 2018 в 17:59
поделиться

попробуйте это преобразовать файл dos в unix-файл:

fromdos file

1
ответ дан hawston 3 September 2018 в 17:59
поделиться
tr -d '\r' < infile > outfile

См. tr (1)

197
ответ дан Henrik Gustafsson 3 September 2018 в 17:59
поделиться

Кто-то еще рекомендует dos2unix, и я настоятельно рекомендую его. Я просто предоставляю более подробную информацию.

Если установлено, перейдите к следующему шагу. Если я еще не установлен, я бы рекомендовал установить его через yum, например:

yum install dos2unix

. Тогда вы можете использовать его как:

dos2unix fileIWantToRemoveWindowsReturnsFrom.txt
3
ответ дан James Oravec 3 September 2018 в 17:59
поделиться

Для UNIX ... Я заметил, что dos2unix удалил заголовки Unicode из моего файла UTF-8. В режиме git bash (Windows) следующий скрипт работает хорошо. Он использует sed. Обратите внимание, что он удаляет только возврат каретки на концах строк и сохраняет заголовки Unicode.

#!/bin/bash

inOutFile="$1"
backupFile="${inOutFile}~"
mv --verbose "$inOutFile" "$backupFile"
sed -e 's/\015$//g' <"$backupFile" >"$inOutFile"
1
ответ дан LexieHankins 3 September 2018 в 17:59
поделиться

вы можете просто сделать это:

$ echo $(cat input) > output
0
ответ дан mma7 3 September 2018 в 17:59
поделиться

Старая школа:

tr -d '\r' < filewithcarriagereturns > filewithoutcarriagereturns
31
ответ дан plinth 3 September 2018 в 17:59
поделиться

Я использовал для этого python, здесь мой код:

end1='/home/.../file1.txt'
end2='/home/.../file2.txt'
with open(end1, "rb") as inf:
     with open(end2, "w") as fixed:
        for line in inf:
            line = line.replace("\n", "")
            line = line.replace("\r", "")
            fixed.write(line)
0
ответ дан Raphael 3 September 2018 в 17:59
поделиться

sed -i s/\r// <filename> или немного; см. man sed или богатство информации, доступной в Интернете, относительно использования sed.

Следует отметить одно точное значение «возврата каретки» в приведенном выше; если вы действительно имеете в виду единственный управляющий символ «возврат каретки», то приведенный выше рисунок правильный. Если вы имели в виду, в общем, CRLF (возврат каретки и фид строки, то есть как линейные фиды реализуются под Windows), тогда вы, скорее всего, захотите заменить \r\n. Голыми линейными каналами (newline) в Linux / Unix являются \n.

7
ответ дан Rob 3 September 2018 в 17:59
поделиться

Вот что,

%0d является символом возврата каретки. Чтобы сделать его совместимым с Unix. Нам нужно использовать команду ниже.

dos2unix fileName.extension fileName.extension

2
ответ дан Sireesh Yarlagadda 3 September 2018 в 17:59
поделиться
Другие вопросы по тегам:

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