sed コマンドを使用して動的単語を置き換える

sed コマンドを使用して動的単語を置き換える

スクリプトが実行されるたびに異なる可能性があるファイルの単語を置き換える必要があります。ファイルの内容は次のとおりです。

class DynamicContentToReplace > Something

ここでは、sedコマンドを使用して[DynamicContentToReplace]を必須コンテンツに置き換える必要があります。 [DynamicContentToReplace]には、スペースを除くすべてを含めることができます。

私たちが取ることができる仮定は、ファイルに次のclass単語を含む行だけが含まれているということです。

希望の出力

class RequiredContent > Something

次のコマンドを試しましたが、 sed -e "s/\(class \)\([^\s]+\)/\1RequiredContent/"まだ内容を変更できませんでした。私はここで何を見逃していますか?私はすでに経験したこれ投稿もします。しかし、解決策が見つかりませんでした。

ベストアンサー1

  • デフォルトの正規表現では、+数量子をエスケープする必要があります。
  • \+*GNU拡張なので、または代わりに使用する必要があります\{1,\}
  • を使用する[^[:space:]]か、単に[^ ]交換してください[^\s]。 GNUを使用すると、スペースを除くすべてをsed使用できます\S
  • 2番目のグループは\2どこにも使用されないため、キャプチャする必要はありません。
  • sedコマンドが1つしかない場合は必要ありません。-e
  • 不要なものを交換する代わりに、^前に追加したい場合があります。classinstance=my_class_something()

使用:

sed 's/^\(class \)[^[:space:]]*/\1RequiredContent/'

または、拡張正規表現(sed -E)を使用してください。

sed -E 's/^(class )\S+/\1RequiredContent/'

おすすめ記事