Есть ли команда Bash для преобразования \r \n в \n?
Когда я загружаю свои скрипты из Windows в Linux, мне нужна такая утилита, чтобы все заработало.
Есть ли команда Bash для преобразования \r \n в \n?
Когда я загружаю свои скрипты из Windows в Linux, мне нужна такая утилита, чтобы все заработало.
Есть:
dos2unix
Существует утилита Unix под названием conv
которая может преобразовывать окончания строк. Он часто вызывается с softlinks к u2d
или d2u
или unix2dos
или dos2unix
Кроме того, есть утилиты, которые называются fromdos
и todos
.
С помощью sed и найдите этот конец с помощью .txt, .php, .js, .css
:
sed -rie 's/\r\n/\n/' \
$(find . -type f -iregex ".*\.\(txt\|php\|js\|css\)")
Translate (tr) доступен во всех Unixes:
tr -d '\r' # From \r\n line end (DOS/Windows), the \r will be removed so \n line end (Unix) remains.
Делать это с POSIX сложно:
POSIX Sed не поддерживает \r
или \15
. Даже если это так, опция -i
на месте не POSIX
POSIX Awk поддерживает \r
и \15
, однако опция -i inplace
не POSIX
d2u и dos2unix не POSIX утилит , но ех
POSIX ex не поддерживает \r
, \15
, \n
или \12
Чтобы удалить возврат каретки:
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file
Чтобы добавить возврат каретки:
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file
Использование man 1 ed (который редактирует файлы на месте без какой-либо предыдущей резервной копии - в отличие от: sed .. -i ".bak" ...):
ed -s file <<< $'H\ng/\r*$/s///\nwq'
Да, используйте dos2unix
. Например:
[justin@mybox ~]$ dos2unix myfile