私はタブ区切りのデータファイルを持っているとしましょう。私は、ファイル内のすべてのタブを1つの空白文字に変換したいと思います。テンポラリファイルなしで同じファイルに出力リダイレクト
$ cat junk
John Doe 35 New York
Bob Smith 24 Boston
Jane Doe 31 Los Angeles
これを行うには、expand
コマンドを使用できます。私はこのようにそれを行う場合:
$ expand -t 1 junk > junk
それがジャンクファイルを壊しますし、すべてのデータが失われます。最も簡単な解決策は、もちろん、出力を一時ファイルにリダイレクトしてから、一時ファイルの出力を元のファイルにリダイレクトすることです。これは次のようになります。
$ expand -t 1 junk > temp
$ cat temp > junk
$ rm temp
$ cat junk
John Doe 35 New York
Bob Smith 24 Boston
Jane Doe 31 Los Angeles
これはあまりにも面倒です。一度にすべてをやるために使うことができる簡単な方法があるのでしょうか?
これは、処理されている行のすべてのタブ文字(つまり、最初のタブ文字だけではありません)を置換します(
g
)。ファイル全体を配列などに読み込み、メモリ内で処理して同じファイルに書き戻すことができます。しかし、それははるかに面倒です。 – GMichael[ファイルを消去せずにリダイレクトする方法cat cat myfile> myfile](http://stackoverflow.com/questions/21492189/how-to-redirect-without-erasing-file-cat-myfile-myfile) – Inian