5

私はファイル file.txt を持っています 魔女はこれらのエントリを持っています

ニューヨーク

LA

SF

コマンド tr '\n' ',' < file.txt を実行すると、すべての改行文字が正常に削除されました。

この出力はすべて同じfile.txtファイルに必要なので、出力を次のようにリダイレクトしました

tr '\n' ',' < file.txt > file.txt,

しかし、file.txtには何も入れず、結果のファイルは空です。リダイレクトのためにtrの出力が失われる理由を誰でも説明できますか?

4

3 に答える 3

6

最初に出力ファイルを開き、ファイルの内容を削除してから、 tr コマンドに何も感じず、空のファイルに戻るためです

tr '\n' ',' < file.txt > file2.txt 

動作します

于 2013-02-03T18:45:38.227 に答える
0

で質問にタグを付けたのでsed、sed oneliner をお勧めします。sed は、オプション「-i」を使用してファイルを「インプレース」に変更することもできます

sed -i ':a $!N; s/\n/,/; ta' file

または awk で

 

awk '{x=x""sprintf($0",")}END{gsub(/,$/,"",x);print x}' file

sedとは異なり、awkには「インプレース」変更オプションがありません。次のことを行う必要があります。

awk '...' file > /tmp/mytmp && mv /tmp/mytmp file
于 2013-02-03T20:46:14.090 に答える
0

改行を置き換えるだけの場合は、,これを使用できます

awk 'ORS=","' temp.txt > file.txt

于 2013-02-04T02:36:14.727 に答える