nosidによると、-i
オプションを使用すると、ファイルを適切に編集できます。あなたのオペレーティングシステムのマニュアルページを読んで、-i
の使い方を正確に判断してください。
for this in foo*.txt; do
sed -i'' -e 'your-sed-script' "$this"
done
私は確実にあなたの挿入方法がうまくいくか分からない、あるいは少なくとも、仕事、言った:そして、あなたはファイルを識別し、行動するためにシェルスクリプトの少しでsedをラップすることができます。私はFreeBSDとOS Xでテストしましたが、全く動作しませんでした。行を挿入する私の普通の方法は、代わりにawkを使うことです。したがって、(例えば):
for this in foo*.txt; do
awk '/MYWORD/{print "Extra line of text goes here."} 1' "$this" > "$this.$$"
mv "$this.$$" "$this"
done
awkのラインは、ここでは(基本的な正規表現にsed
デフォルトのに対し、拡張正規表現)/ MYWORD /検索します。それが見つかると、最初に「余分な」テキストが印刷されます。次に、 "1"は現在の行も印刷する "true"と評価されます。その効果は、MYWORDの前に行に "余分な"テキストを挿入することです。
スクリプトではないことに注意してください。それは、変更されていないファイルの無駄遣い、配管と名前の変更です。あなたはawkの終了値に応じて一時ファイルを "mv"にするか、cmp
を使ってファイルが変更されたかどうかを判断し、残りの一時ファイルなどを消去することで改善できます。 。
あなたのサンプルコードは実際には1つのファイルで動作すると言っていますか? – Graham