
現在、シェルでちょっとした実験を行っています。
私のコマンドは次のとおりです:
echo 'This a cool butterfly' > test
sed 's/butterfly/parrot/g' test > test
しかし、テスト ファイルで単純な cat を実行すると、ファイルは空になります。なぜでしょうか?
答え1
ファイルの読み取りと書き込みを同時に行うことはできません。resume では、sed はファイル 'test' を読み取りますが、同時にこのファイルに書き込みを行っているため、結果は空のファイルになります。
これを試して:
sed -i 's/butterfly/parrot/g' test
これにより、ファイルはその場で編集されます。