シェルスクリプトをデバッグし、次のコマンドで実行されるタスクを見つけようとしています。
sed -i '1,+999d' /home/org_user/data.txt
次のエラーで失敗するため、このコマンドを変更する必要があります。
illegal option sed -i
しかし、変更する前に、BAUの機能を理解する必要があります。
この点で入力を感謝します。
これの適用用途は次のとおりです。次のファイルがあるとしますfile.txt
:
1, 2, 6, 7, "p"
「p」を0に置き換えます。
sed 's/"p"/0/g' file.txt
上記を使用すると、出力がコマンドラインに出力されます。
次のように、単にテキストをファイルにリダイレクトしないのはなぜでしょうか。
sed 's/"p"/0/g' file.txt > file.txt
残念なことに リダイレクトの性質 のため、上記は単純に空のファイルを生成します。
代わりに、出力用に一時ファイルを作成して、後で元のファイルを次のように上書きする必要があります。
sed 's/"p"/0/g' file.txt > tmp.txt && mv tmp.txt file.txt
Sed edit in placeオプションで上記の長い回避策を実行する代わりに-iを使用すると、はるかに簡単なコマンドを使用できます。
sed -i 's/"p"/0/g' file.txt
-i
オプションが指定され、sed
ファイルをその場で編集します。
-i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if extension supplied)
from sed(1)
http://www.gnu.org/software/sed/manual/sed.html#Introduction
sed
の一部の実装では、-i
オプション。それが何をするかは、
sed -e '...' file > tmp
mv tmp file