如何在linux服务器中使用正则表达式只查找一个进程名称

时间:2017-02-15 09:10:15

标签: regex linux

我在服务器上运行了以下进程。我只需要获得vehicledetailformatter-1.0.jar进程名称。但是当我试图运行以下命令时,它也会重新审视不需要的进程。请参阅下文。

ps aux | grep "[v]ehicledetailformatter-1.0.jar"
52843     4190  0.1  1.2 1405336 97000 ?       Sl   Feb14   1:35 /data01/appserver/jboss1/jboss-eap-6.4/bin/jre1.8.0_112/bin/java -jar vehicledetailformatter-1.0.jar
52843     4259  0.1  0.9 1404388 77860 ?       Sl   Feb14   1:36 /data01/appserver/jboss1/jboss-eap-6.4/bin/jre1.8.0_112/bin/java -jar nonvehicledetailformatter-1.0.jar
52843     4294  0.1  1.1 1405408 96296 ?       Sl   Feb14   1:37 /data01/appserver/jboss1/jboss-eap-6.4/bin/jre1.8.0_112/bin/java -jar vehicledetailformatter-1.0.jar
52843     4751  0.1  1.2 1405744 100252 ?      Sl   Feb14   1:35 /data01/appserver/jboss1/jboss-eap-6.4/bin/jre1.8.0_112/bin/java -jar vehicledetailformatter-1.0.jar
52843    21402  0.1  0.9 1402260 75372 pts/3   Sl   Feb14   1:06 /data01/appserver/jboss1/jboss-eap-6.4/bin/jre1.8.0_112/bin/java -jar vehicledetailformatter-1.0.jar

但是将来的jar版本将更新到另一个版本。所以在脚本中我使用jar文件作为变量,如jar_file =“”vehicledetailformatter * .jar“

您能否帮我找到正确的流程名称?

2 个答案:

答案 0 :(得分:0)

func funcForGesture(sender: UISwipeGestureRecognizer){
    if sender.direction == .left {
        //scroll to next item
        let cellItems = self.joke_cards.indexPathsForVisibleItems
        let next = cellItems[0] as! IndexPath

        self.joke_cards.scrollToItem(at: next, at: .centeredHorizontally, animated: true)
    }
}

(注意引号内的空格)。

关于版本号更改,这有效:

ps aux |grep " vehicledetailformatter-1.0.jar"

另请注意点之前的ps aux |grep " vehicledetailformatter-[0-9]*\.[0-9]*\.jar" 反斜杠:严格来说,即使在第一个示例中也应该使用它,同时正则表达式中的尾随\也不会坏。

还有其他可能性,但需要阅读有关正则表达式的内容。

答案 1 :(得分:0)

对于processname前面的空格的匹配强制正则表达式匹配整个名称,添加。*来吃掉所有版本信息并将正则表达式锚定到行尾将肯定只捕获您请求的进程

ps aux | grep " vehicledetailformatter-.*\.jar$"