1

行の先頭または末尾に一致する正規表現を誰かに教えてもらえますか?たとえばsed 's/[regex]/"/g' filehere、出力を使用した場合、出力は引用符で囲まれた各行になりますか?試し[\^$][\^\n]みましたが、どちらもうまくいかなかったようです。私はおそらく明らかな何かを見逃しています、私はこれらに不慣れです

4

3 に答える 3

4

試す:

sed -e 's/^/"/' -e 's/$/"/' file
于 2013-01-04T17:55:58.643 に答える
3

すべての行の開始と終了に引用符を追加するには、次のようにします。

sed 's/.*/"&"/g'

ただし、各行の開始または終了に一致させるために考え出そうとしたREは次のとおりです。

sed -r 's/^|$/"/g'

そのERE( "-r"で有効)なので、GNU sedで動作しますが、古いsedでは動作しません。

于 2013-01-04T20:33:27.530 に答える
0

matthiasの応答は完全に適切ですが、後方参照を使用してこれを行うこともできます。正規表現を学習している場合は、それらを知っておくと便利です。

後方参照を使用してこれを行う方法は次のとおりです。

sed 's/\(^.*$\)/"\1"/g' file

その正規表現の中心にあるのは、です。これは、行の開始( )と行の終了()で囲まれた^.*$すべて( )に一致することを意味します。これは、事実上、毎回行全体に一致することを意味します。.*^$

その用語を括弧内に入れると、後で(置換パターンで)参照できる後方参照が作成されます。ただし、sedがリテラルの括弧と一致するのではなく、後方参照を作成することを意味していることを理解するには、それらを円記号でエスケープする必要があります。したがって、最終的には\(^.*$\)検索パターンになります。

置換パターンは、単純に二重引用符の後に\1、これが後方参照です(括弧で囲まれた最初のパターン一致、つまり1を参照します)。次に、最後の二重引用符を追加して、で終わります"\1"

于 2013-01-04T20:35:51.207 に答える