私の問題を説明する例を示します。変数名は「$」行の終わりを意味perlのパターン$との競合があるので、私は、それは間違っている知っている変数をsed検索パターンで使用する方法
sed -n "/$VARIABLE,test/p" aFile
:
VARIABLE='some string'
は、私は次のようにファイル内の文字列を検索したいです。
だから私の質問です:sedのパターン検索で変数を使用する方法はありますか?
私の問題を説明する例を示します。変数名は「$」行の終わりを意味perlのパターン$との競合があるので、私は、それは間違っている知っている変数をsed検索パターンで使用する方法
sed -n "/$VARIABLE,test/p" aFile
:
VARIABLE='some string'
は、私は次のようにファイル内の文字列を検索したいです。
だから私の質問です:sedのパターン検索で変数を使用する方法はありますか?
sed
の範囲表記、つまり/ start /、/ end /?を使用しようとしているようです。あれは正しいですか?
すべてを行う必要が欠落している追加の「/」文字を追加する、すなわち
sed -n "/$VARIABLE/,/test/p" aFile
範囲は、行番号、文字列/ regexs、および/または相対行番号で構成することができますされている場合(負帰還なし)。
sed -n "1,20p" aFile
# prints lines 1-20
sed -n '/start/,/end/p' aFile
# prints any text (include current line)
# with start until it finds the word end
sed -n '/start/,+2p' aFile
# prints line matching start and 2 more lines after it
私は説明をsimplfyする/regex/
パターンの文字列を使用しています。 あなたはそれらについて学ぶので、/^[A-Za-z_][A-Za-z0-9_]*/
などのような本当のrex-exを行うことができます。
「$」についてのコメントごとに、sedは評価中のreg-exに文字が表示されている場合にも 'end-of-line'の指標として '$'を使用します。また、いくつかの例でdbl-quotesまたはsingle-quotesを使用する方法に注意してください。一重引用符は、式sed -n '/$VARIABLE/,/test/p' aFile
がリテラル文字と一致し、$がreg-exの末尾にないため、通常の文字として使用されることを意味します。 '$'は、行末(reg-ex(part))の最後にあるときにのみ行末として適用されます。例えば、/start$|start2$/
を実行することができ、それらの両方が行末を示します。
他の人が指摘したように、
sed -n "/$VARIABLE/,/test/p" aFile
のご使用は、あなたのテキストを確保したい場合にはSOの終わりに固定された
sed -n "/some text/,/test/p" aFile
にシェル変数explasionを経由して変換されますあなたは書くことができる
sed -n "/$VARIABLE$/,/test/p" aFile
に展開します。
sed -n "/some text$/,/test/p" aFile
は、私は、これはシェルが `sed`を産卵する前に二重引用符の内側に` $ VARIABLE`を展開し
最後の行をsed-n "/ some text $ /、/ test/p" aFileにしないでください。 –
@SébastienClément:うん!あなたが正しい。それを修正します。あなたの慎重な目に感謝;-) – shellter
に役立ちます願っています。あなたの問題は '/ $ VARIABLE、+ 4 /'はおそらく '/ $ VARIABLE /、+ 4'です。 – Benoit