シェルスクリプトをデバッグしていて、次のコマンドで実行されるタスクを見つけようとしています:
sed -i '1,+999d' /home/org_user/data.txt
次のエラーで失敗するため、このコマンドを変更する必要があります。
illegal option sed -i
しかし、変更する前に、BAU の機能を理解する必要があります。
この点に関するご意見をお待ちしております。
シェルスクリプトをデバッグしていて、次のコマンドで実行されるタスクを見つけようとしています:
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
の一部の実装では、このオプションsed
がサポートされていません。-i
それが何をするかは、次のようにシミュレートできます
sed -e '...' file > tmp
mv tmp file