回答:
次のコマンドを使用します。
fromdos yourtextfile
逆に:
todos yourtextfile
これらのコマンドはtofrodosパッケージ(最新のディストリビューション)にあり、同名の古いUNIXツールを模倣する2つのラッパーunix2dosとdos2unixも提供します。
find . -name '*.txt' -print0 | xargs -null fromdos
を使用しdos2unix
ます。
dos2unix-DOS / MACからUNIXへのテキストファイル形式コンバーター
dos2unix [options] [-c convmode] [-o file ...] [-n infile outfile ...] Options: [-hkqV] [--help] [--keepdate] [--quiet] [--version]
私はperlを好む:
perl -lne 's/\r//g; print' winfile.txt > unixfile.txt
しかし、それは私の用途によく合い、覚えるのはとても簡単です。すべてのシステムにdos2unixコマンドがあるわけではありませんが、私が取り組んでいるほとんどのシステムにはperlインタープリターがあります。
もう1つはrecodeで、dos2unixとiconvの強力な代替品です。Debianリポジトリの「recode」パッケージで入手できます。
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
そして今、stackoverflow.comの友人の1人から直接16進エディターでCRを手動で削除するよりも少し複雑さが少なく、ビーフインタープリター(使いやすい近所のDebianリポジトリにあります)で使用できます。
dos2unix in brainfuck!
,[[->+>+<<]>>>,[<-------------[+++++++++++++.>>>]<[>>----------[>+++++++++++++.-------------]<++++++++++>]<<<<[-]>>>[-<<<+>>>]]<[-]<[-]<]++++++++++.
これを書くために彼の人生の1時間を無駄にしてくれたjkに大いに感謝します!
非常に簡単な方法を見つけました…nanoでファイルを開く:## nano file.txt
Ctrl + Oを押して保存しますが、Enterを押す前に、Alt + DでDOSとUnix / Linuxの行末を切り替えるか、Alt + MでMacとUnix / Linuxの行末を切り替えてからEnterを押して保存し、 Ctrl + Xで終了します。
Alt+d
。時々、altは端末プログラムによってインターセプトされるため、esc+d
代わりに使用できます。
GUIメソッドが必要な場合は、Kateテキストエディターを試してください(他の高度なテキストエディターでもこれを処理できる場合があります)。開き見つける / 置き換えダイアログ(Ctrl+をR)、と交換してください\r\n
と\n
。(注:ドロップダウンから「正規表現」を選択し、オプションから「選択のみ」の選択を解除する必要があります。)
EDIT:または、あなたは、単にUnixのフォーマットに変換したい場合は、メニューオプションを使用しますTools
> End of Line
> Unix
。
\r\n
したい\n
場合は、どのOSがどの行末を使用しているかを覚えるよりも検索/置換を使用する方が簡単です。;)
これを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がインストールされているすべてのプラットフォームで動作するはずです。パブリックドメイン。
CR LF
awkをLF
使用する場合:
awk -v RS='\r?\n' 1
command | awk -v RS='\r?\n' 1
awk -v RS='\r?\n' 1 filename
使用例:
echo -e 'foo\nbar\r\nbaz' | awk -v RS='\r?\n' 1 | hexdump -C
説明:
-v RS='\r?\n'
変数RS(設定入力 のR ECORD S eparator)への\r?\n
入力は、LF(によって分離されたライン毎に読み取られる意味、\n
(できる)?
)CR(が先行します\r
)。
1
awkが実行するスクリプトです。スクリプトはで構成されcondition { action }
ます。この場合、1
trueと評価される条件です。アクションは省略されているため、デフォルトのアクションが実行されます。これは、現在の行を印刷することを意味します({print $0}
またはとして記述することもできます{print}
)。
LF
to CR LF
:変数ORS
(o utput r ecord s eparator)を設定して、出力の行末を変更できます。例:
echo -e 'foo\nbar\r\nbaz' | awk -v RS='\r?\n' -v ORS='\r\n' 1 | hexdump -C
WindowsシステムからUnixシステムにファイルを緊急転送するために必要なファイルにこのスクリプトを使用しました。
find . -type f | xargs file | grep CRLF | cut -d: -f1 | xargs dos2unix
find . -type f
コマンドを実行しているディレクトリで再帰的にすべてのファイルを検索します
xargs file
これをファイルプログラムに渡して、ファイルの分析を取得します。
grep CRLF
CRLFを示すファイルの出力のみが必要です。
cut -d: -f1
色までの出力を取得します。残りを捨てます。今はファイル名だけが必要です
xargs dos2unix