ファイルからテキストを削除し、開かずに保存

ファイルからテキストを削除し、開かずに保存

複数のファイルから重複したテキスト行を削除しています。私が使用したいコマンドは

sed -i 's/set autologout=10//g' /home/$x/.login

実行すると、このエラーが発生します

sed: -I or -i may not be used with stdin

オプションなしでコマンドは正常に実行されますが、-i保存されません。各サーバーでアカウントごとに2つのファイルを変更しているため、このスクリプトを作成しています。見苦しい例外を使用してコーディングできますが、保存することはできません。

ベストアンサー1

@don_crisstiのコメントは、次のことを示しています。BSD sedらしい必要議論-i-e使用されない場合は、最初の引数をsedコマンドとして使用します。これにより、入力ファイルに何も残らず(デフォルト)、stdinファイルを「現在の場所」で編集できなくなります。

これは次の言葉と反対です。-iオプションのパラメータを持つGNU sed

つまり、パラメータをバックアップファイルに使用される拡張子としてsed解釈することもできます。したがって、バックアップファイルを保持したくない場合は、このオプションに空の引数を指定するだけです。s/set autologout=10//g-i-i

sed -i "" 's/set autologout=10//g' /home/$x/.login

おすすめ記事