sed:-nスイッチを使用する代わりに、スクリプトファイルを介して自動印刷を無効にする方法は?

sed:-nスイッチを使用する代わりに、スクリプトファイルを介して自動印刷を無効にする方法は?

コマンドラインとスクリプトファイルインターフェイスの切り替えについて混乱しています。私はうまくいくコマンドラインに素晴らしいスクリプトを書いていますが、それを.sedファイルに保存しようとすると、もはや.sed-nファイルが利用できないことを覚えています。 "!d"フラグを試してみましたが、同じ結果が出ませんでした。私の質問:
これを.sedファイルに入れる方法はありますか-n、それともスクリプトファイルインターフェイスにあるときに自動印刷を停止する別の方法はありますか?スクリプトをシェルから保護することから保護しないものに切り替えることは嫌いですが、迂回する方法がないようです。

ベストアンサー1

標準(POSIX)メソッドは#nスクリプトの先頭にあります。これはスクリプトの最初の2バイトでなければなりません。

これは、実行中のスクリプトでのみ利用可能なshe-bangの使用を排除しますsed -f the-script(she-bangsはPOSIXではなくPOSIXはユーティリティへのパスを指定しません)。します。

#! /path/to/sed -nf

sedパラメータ(ほとんど)を使用してシャバンをサポートするシステムで実行可能なスクリプトを作成したい場合。

#n次のようにコマンドラインでも機能します。

sed '#n
  s/foo/bar/p'

「いいね!」の後にテキストを追加できます。

#no default output
s/foo/bar/p

または:

#nifty way to turn -n on
s/foo/bar/p

実際には、-n誤って開かないように覚えておくべきことです。#このため、(および読みやすくするために)コメントの後にスペースを使用することをお勧めします。

# no, I don't want to turn -n on
s/foo/bar/

おすすめ記事