正規表現pkillの使用

正規表現pkillの使用

以下のように複数のJavaプロセスが実行されています。

java -jar /my/path/to/app/myapp.jar

java -jar /my/path/to/app/prodapp.jar

java -jar /my/path/to/app/testapp.jar

java -jar /my/path/to/app/myapp_v.01.jar

pkill -f myapp.jarこれで、期待どおりに機能する特定のプロセスを終了できます。正規表現を使用してmyapp_v.01.jarを終了する方法を試しましたpkill -f myapp_*.jar。この正規表現にはどのような問題がありますか?

私は代替品を探していませんpkill。正規表現が機能しない理由を知りたいです。

ベストアンサー1

そのためには正規表現の基本を知る必要があります。この*修飾語は、よく考えるように「何も」を意味しません。アスタリスクはシェルでこれらの意味を持ちますが、正規表現ではなく異なります。*意味:前の文字(またはその前に文字セットがある場合は文字セット[])を取得し、0から無限大の間の一致を試みます。

したがって、実際に確認したいのは、myapp_*.jarプロセスリストに次のいずれかがあるかどうかです。

myapp.jar
myapp_.jar
myapp__.jar
myapp___.jar
...

理解しましたか?何らかの方法で「myapp_v.01.jar」と一致しません。どの文字にも一致させるにはが必要です.。したがって、正規表現はpkill次のようになります。myapp_*.*.jar

おすすめ記事