キャリッジリターン\r
をUnixのファイルからすべて削除する最も簡単な方法は?Unixのキャリッジリターンを削除する
答えて
私はあなたがキャリッジリターンをで(CR、"\r"
は、0x0d
)(あなたはすべての私のための文字列の途中でそれらを持っていることはなく、ただやみくもにファイル内の以下の行のを終了を意味すると仮定するつもりです知っている)。それはあなたのシステムにインストールされていた場合に行くことに
$ 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
方法をされています:最初の行のみの終わりにCRと、このテストファイルを使用して
$ 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
を、あなたのボックスにインストールされているこれらのツールの任意のを持っていない場合は、しようとするよりも大きな問題を持っています参照してください
sed -i s/\r// <filename>
またはsomesuch; man sed
またはsed
の使用に関してウェブ上で利用可能な豊富な情報を参照のこと。
上記で「キャリッジリターン」の正確な意味を指摘しておきます。あなたが本当に単一の制御文字 "復帰"を意味するなら、上記のパターンは正しいです。より一般的には、CRLF(復帰改行と、改行がWindowsでどのように実行されるか)を意味する場合は、代わりに\r\n
を置き換えてください。 Linux/Unixのベアラインフィード(改行)は\n
です。
私は、動作しない - > sedの/ \ r \ n/=/'countryNew.txt> demo.txtを使用しようとしています。 \t \t \t \t "虎" \t \t "ライオン" – Suvasis
あなたはそれがあなたがマックにいることを意味すると思いますか?私はダーウィンsedは、デフォルトでは、ほとんどのLinuxのバージョンよりも異なるコマンドと機能セットを持っているようです... – jsh
FYI、 's/\ r //'はOS X上のキャリッジリターンを削除していないようです代わりにリテラル 'r'文字を削除してください。なぜそれがまだあるのか分かりません。たぶんそれは文字列の引用方法と関係がありますか?この問題を回避するには、 '\ r'の代わりに' CTRL-V + CTRL-M'を使用することが有効です。 –
tr -d '\r' <infile> outfile
:-)ファイルを変換するtr(1)
非常に簡単で信頼できる。ありがとうございました。 –
Not great:1.インプレースでは動作しません。2. EOLではなく\ rも置き換えることができます(あなたが望むかもしれないかもしれません...)。 –
1.ほとんどのunixyツールはそのように動作します。あなたがいなくても元のものを持っていれば、物事を知る最も安全な方法です。 2.記載されている問題は、行末を変換しないで、改行を取り除くことです。 しかし、他にもあなたに役立つ回答がたくさんあります。 –
オールドスクール:
tr -d '\r' <filewithcarriagereturns> filewithoutcarriagereturns
これは魅力的に働いた:)ありがとう。 – user1336087
目的地と同じファイルを使用しないでください... – Hejazzman
ドスは、UNIXのファイルに変換するために、これを試してみてください。
fromdosはviユーザーである場合は、ファイルを開くとしてキャリッジリターンを削除することがあり
ファイル:
:%s/\r//g
かと
:1,$ s/^M//
ctrl-vを押してからCtrl + mを押すと^ Mと入力する必要があることに注意してください。
ファイルがすべての行にCR(つまり正しいDOSファイル)がある場合、vimはfiletype = dosでロードし、 '^ Mさんはまったくありません。これを回避することは、キーストロークの大部分です。これは、ヴィムが作られるものではありません。私は 'sed -i'と' -e 's/\ r $ // gのためだけにEOLのCRへの削除を制限します。 –
あなたがdos2unix
コマンドを持っていますが、Pythonインタプリタ(バージョン2.5+)を持っていないん(OS Xのような)OSを使用している場合、このコマンドは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
という名前を使用することができます。
は、単にこれを行うことができます:他に
$ echo $(cat input) > output
誰かがなぜ「-1」を与えたのか分かりません。これは完全に良い答えです(私のために働いた唯一のもの)。 – FractalSpace
ああ、申し訳ありません、それは私でした。 待って、見て、それは本当に '\ r'のために動作しません! –
@FractalSpaceこれはひどい考えです!ファイル内のすべてのスペースを完全に破壊し、ファイルのすべての内容をシェルが解釈できるようにします。 1行の 'a * b'を含むファイルで試してみてください... –
誰かがdos2unix
をお勧めしますし、私は強く同様にそれをお勧めします。私は詳細を提供しています。
インストールされている場合は、次の手順に進みます。まだインストールされていない場合、私は同じようyum
を経由して、それをインストールすることをお勧めします:
yum install dos2unix
次に、あなたが好きそれを使用することができます:ここでは
dos2unix fileIWantToRemoveWindowsReturnsFrom.txt
は事ある、
%0d
は、キャリッジリターン文字です。それをUnixとの互換性を持たせる。以下のコマンドを使用する必要があります。もう一度ソリューション
dos2unix fileName.extension fileName.extension
...もう一つは常にありますので:
perl -i -pe 's/\r//' filename
それは場所でだと私が一緒に働いてきたUNIX/Linuxでのすべての味で動作しますので、それはうれしいです。
私は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)
Linux上で最も簡単な方法は、私見
sed -i 's/\r//g' <filename>
置換演算子's/\r//'
周り強い引用符は不可欠ありますさ。それらがなければ、シェルは\r
をエスケープ+ rと解釈し、それを平文r
に縮小し、小文字のr
をすべて削除します。そのため、上記の2009年の回答はRobで動作しません。
/g
修飾子を追加すると、最初のものだけでなく、複数の\r
も削除されます。
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"
あなたはX環境を実行し、適切なエディタ(Visual Studioのコードを)持っている場合は、私はreccomendationをたどる:
Visual Studio Code: How to show line endings
ちょうどあなたの右下隅に行きますスクリーン、ビジュアルスタジオコードは、ファイルエンコーディングとファイルの後ろに続く行のコンベンションの両方を表示します。単純なクリックだけで、それを切り替えることができます。
Linux環境では、notepad ++の代わりにビジュアルコードを使用するだけで、移動するように設定されています。
- 1. テキストファイルからキャリッジリターンを削除します。
- 2. Unixシェルスクリプト削除 - ファイル
- 3. UNIX - 特定の行を削除する
- 4. UNIXのC++でファイルを削除する
- 5. XMLDocumentを使用してキャリッジリターンを削除するときのInnerText?
- 6. 鉛白スペースの削除 - UNIX
- 7. UNIXスクリプトでSCPバナーを削除する
- 8. PHPを使ってhtmlでキャリッジリターンを削除するには?
- 9. PowershellスクリプトでXMLファイルからキャリッジリターンと改行を削除する
- 10. 二重引用符で囲まれたキャリッジリターンを削除する
- 11. PostgreSQLでキャリッジリターンと改行を削除するには?
- 12. ストリームから余分なキャリッジリターンを削除する
- 13. Java文字列からキャリッジリターン(HEX 0A)を削除するには?
- 14. Excelでキャリッジリターン値を削除するには?
- 15. Java削除ファイルunix way(リンク解除ヘッダ)
- 16. CSVデータ値からキャリッジリターンを削除します。
- 17. Microsoft SQL Server 2008 R2がキャリッジリターンを削除します
- 18. UNIXファイル名の削除/変更
- 19. xsl:strip-spaceはキャリッジリターンを削除していません
- 20. Oracle DB内のレコードを削除するUNIXスクリプトを作成
- 21. unixのファイルから特定の行を削除するには?
- 22. ファイルから重複する行を削除するunixツール
- 23. Unix - 正規表現にマッチする部分を削除する
- 24. Unixのリモートサーバからファイルを削除する
- 25. ファイル内のストップワードを削除するUnixスクリプトまたはパーサー
- 26. UNIXで複数のファイルやディレクトリを削除するには
- 27. 数値以外の値を削除する - Unix
- 28. 文字を削除する左の点 - Unix
- 29. Unixで自分のファイルだけを削除する
- 30. Unixでキャリッジリターンを印刷するときのデフォルトの動作は何ですか?
「\ r」「\ n」、または厄介な「\ r」のいずれかについて話していますか? –
関連:[^ M(Windowsキャリッジリターン)を含むファイルを見つけるためのgrep](http://superuser.com/q/194668/86416)。 –