sedを使用してキーワード(キーワードを含む)の前のn文字を置き換えますか?

sedを使用してキーワード(キーワードを含む)の前のn文字を置き換えますか?

すべてを交換するために今後次のキーワードコードはうまく機能します。

sed 's/.*keyword/string-to-be-replaced/'

ただし、キーワードの前の n 文字を置き換えるには含むキーワード解決策が見つかりません。誰にもアイデアがありますか?

ベストアンサー1

あなたに必要なものn .指す。

n=[num]
sed "s/.\{$n\}keyword/REPLACE/"

...どこ[num]これは、正の整数を表すことが有効でなければならないことを意味します。

とは違う点を参考にしてください.*keyword少なくともいくつかの重要な面では。

  1. .*以前に登場したすべての文字に適用されます。最後起こったkeywordパターン空間にsedあるので複数個ある場合keywords試合、.*最後のものを外して食べます。

    • .\{[num]\}keywordのみ一致最初パターン空間で発見できるパターンの発生です。
  2. .\{[num]\}〜する必要少なくとも[num]- 登場するキャラクターの数を数えてみてください今後キーワードは一致を検証しますが、.*一致することができるkeyword行の先頭にあっても同じです。

    • 一致するので、この動作に近い表現です。に従って[num]以前出てきたキャラクターたちkeywordはい...

      sed "s/.\{0,$n\}keyword/REPLACE/"
      

おすすめ記事