行終端を持つASCIIテキストファイル(Macスタイル)は、行終端(DOS / Windowsスタイル)CR
に変換する必要があります。CRLF
CR
フォローしていないものを検索してにLF
置き換えます。したがって、繰り返しコマンドはファイルを破損しません()。CR
CRLF
CRCRLF
試してみましたが、unix2dos
変換に失敗しました。
Python/vimなしでネイティブArch Linuxコンソールからこのファイルをどのように変換できますか?
答え1
dos2unix
このユーティリティ(DOSからUnixテキスト形式にファイルを変換するユーティリティ)をインストールすると、それぞれMacテキストファイルからUnixテキストファイル形式へ、UnixからDOSへの変換を実行し、ユーティリティも提供されmac2unix
ます。その後、Unixテキストを中間形式として使用して、Macテキスト形式をDOSテキスト形式に変換unix2dos
できます。mac2unix
unix2dos
mac2unix myfile
unix2dos myfile
同じファイルまたはファイルセットに対して複数回実行するのは安全です。
BusyBox(Alpine Linuxなど)には組み込みコマンドとdos2unix
コマンドunix2dos
がありますが、mac2unix
コマンドはありません。したがって、BusyBoxシステムでは、dos2unix
このパッケージにアクセスするためにこのパッケージもインストールする必要がありますmac2unix
。
答え2
Mac2dosファイルはPerlを使って変換できます:
$ perl -pe 's/\r\n|\n|\r/\r\n/g' input-file.txt > output-file.crlf
またはインライン:
$ perl -pi -e 's/\r\n|\n|\r/\r\n/g' file-to-convert
源泉:https://stackoverflow.com/a/14155400/529778そしてhttps://stackoverflow.com/a/6374360/529778
答え3
「...なしでネイティブArch Linuxコンソールでこのファイルを変換するにはどうすればいいですか?」 。 CRをCRLFに:
awk -v RS='\r' -v ORS='\r\n' '1'
たとえば、
$ printf 'foo\rbar\r' | cat -ve
foo^Mbar^M$
$ printf 'foo\rbar\r' | awk -v RS='\r' -v ORS='\r\n' '1' | cat -ve
foo^M$
bar^M$
また、「繰り返しコマンドはファイルを破損させません(CRCRLFを使用)」と述べましたが、入力を読み取ってファイルがあるかどうかを知る方法がないので、再び呼び出されるコマンドを強力に処理する方法がないと思います。 sがそこに配置される前にツールを実行するときにその中にある場合、または元の入力からsの後にsが\r\n
ある場合は、そうしないでください。\n
\r