\ r\nを\ nに変換するBashコマンドはありますか?
WindowsからLinuxにスクリプトをアップロードするとき、物事を機能させるためにこのようなユーティリティが必要です。
有る:
dos2unix
行末を変換できるconv
というUnixユーティリティがあります。多くの場合、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\)")
翻訳( tr )はすべてのUnixで利用可能です:
tr -d '\r' # From \r\n line end (DOS/Windows), the \r will be removed so \n line end (Unix) remains.
Man 1 edを使用する(以前のバックアップなしでファイルをインプレース編集する-とは異なり:sed .. -i ".bak" ...):
ed -s file <<< $'H\ng/\r*$/s///\nwq'
POSIXでこれを行うのは注意が必要です。
POSIX Sed は\r
または\15
をサポートしていません。たとえあったとしても、インプレースオプション-i
はPOSIXではありません
POSIX Awk は\r
および\15
をサポートしていますが、-i inplace
オプションはPOSIXではありません
d2uおよびdos2unixは POSIXユーティリティ ではありません、ただしexは
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
はい、dos2unix
。例えば:
[justin@mybox ~]$ dos2unix myfile