整数変数でsedを使用する

整数変数でsedを使用する

変数sedを使いたいです。

たとえば、sed -n '1,10p' file。したがって、代わりにkを整数位置として10使用したいと思います。$k

答え1

背景

sedシェルまたは環境変数を拡張できません。代わりに、Bashシェルを拡張できるようにする引用符を選択する必要があります。 Bashは二重引用符で囲まれている場合は変数を拡張しますが、単一引用符で囲まれている場合は拡張しません。一重引用符を使用するには、次の手順を実行する必要があります。

$ sed -n '1,'$k'p' file

気づく:上記では、変数をパブリックに設定して、渡され$kたパラメータの引用符内に変数が含まれないようにしましたsed。これにより、シェル Bash は$k設定された値に拡張されます。

二重引用符を使用している場合は、シンボルを使用して${var}二重引用符内の変数を保護することで、シェルが変数を拡張できます。次の${k}表記法が必要です。それ以外の場合は、変数名$kの後にが表示され、pBashシェルが変数名をとして認識するためです$kp

$ sed -n "1,${k}p" file

変数$kとに渡すこともできますp。これは、sed構文がアドレスとコマンドの間にスペースを許可するために機能します(つまり、sedとは異なり、この形式ではスペースはsedに渡されます${k})。

$ sed -n "1,$k p" file

メモ:$k次のメソッドは設定しないと失敗しますので、注意して使用してください。

$ printf "blah %d\n" $(seq 10) |  sed -n '1,'$k'p'
sed: -e expression #1, char 3: unexpected `,'

はい

以下は${k}二重引用符のバリエーションの例です。

$ k="3"; printf "blah %d\n" $(seq 10) |  sed -n "1,${k}p"
blah 1
blah 2
blah 3

シェルと環境変数

このトピックの詳細については、次のU&L Q&Aをお読みください。シェル変数と環境変数の使い方の違いは何ですか?

引用する

関連情報