Bash

在 java 命令輸出中搜尋文本

  • March 24, 2015

我有一個包含多個 Jar 文件的文件夾。

  • dummy.jar

  • myjar-xx.jar

  • myjar-yy.jar

使用 find,我需要找到以“myjar”開頭的第一個文件

現在,我想 grep 使用find命令找到的 Jar 文件中的 Manifest 文件的內容。

我正在使用以下命令來檢查清單文件的內容。

java -jar $(find . -type f -name "myjar-*" -print | head -n 1) -ai

它在控制台上提供輸出 -

Version: 2   
Name: MyName   
Company: ABC

現在,由於在控制台上我可以看到文件的內容,我如何搜尋包含“名稱”的行是否存在“Na”?

如果我理解正確,你說的是這個命令:

java -jar $(find . -type f -name "myjar-*" -print | head -n 1) -ai

返回此輸出:

Version: 2   
Name: MyName   
Company: ABC

並且您想檢查該輸出是否包含以字元串開頭Name:並包含字元串的行Na(不包括Nain Name:)。如果是這樣,你可以這樣做:

java -jar $(find . -type f -name "myjar-*" -print | head -n 1) -ai |
    | grep -q '^Name:.*Na' && echo YES

-q標誌告訴grep不要列印其匹配項。0如果找到匹配項,它只會返回退出程式碼。&& command因此,如果匹配成功,您可以使用執行命令。在這裡,我正在執行,echo YES但您可以將其更改為您想要執行的任何命令。

引用自:https://unix.stackexchange.com/questions/192172