簡體   English   中英

來自命令輸出的 grep 模式

[英]grep pattern from command output

我想通過 jenkins 中的執行 shell 在 Linux 中運行以下命令。

當我直接在 Linux 中運行它時,我得到:

$ polyspace-access -list-project XX/YY -host MyHost -protocol http -login MyUsername -encrypted-password MyPassword
Connecting to MyHost 
Connecting as MyUsername
Get project list with the last Run Id
XX/YY RUN_ID 10
Command Completed

我可以在 Jenkins 中運行相同的命令,但是——

export RunID=`polyspace-access -list-project XX/YY -host MyHost -protocol http -login MyUsername -encrypted-password MyPassword`
echo "This is my RunID: $RunID"

...結果如下:

15:06:59 這是我的 RuleID:連接到 MyHost 15:06:59 以 MyUsername 身份連接 15:06:59 獲取具有最后一個運行 ID 的項目列表 15:06:59 XX/YY RUN_ID 10 15:06:59 命令完全的

如何從結果中只讀取 RUN_ID 號?

如果你的 shell 有可用的awk ,你可以通過它來管道輸出以詢問包含文本“RUN_ID”的行中的第三個字段:

runid=`polyspace-access -list-project XX/YY -host MyHost -protocol http -login MyUsername -encrypted-password MyPassword | awk '/RUN_ID/ { print $3 }'`
echo "This is my RunID: $runid"

如果您知道XX/YY是固定字符串,則可以將模式匹配調整為更嚴格。 如果可能有超過三個字段但所需的數字始終是最后一個字段,您也可以將打印調整為$NF

你可以用一些 groovy 來做到這一點。 請檢查以下示例管道。 我只是在腳本塊中回顯您的輸出。

pipeline {
    agent any

    stages {
        stage('GetID') {
            steps {
                script {
                    string = sh(returnStdout: true, script: 'echo "15:06:59 This is RUN10X my RuleID: Connecting to MyHost 15:06:59 Connecting as MyUsername 15:06:59 Get project list with the last Run Id 15:06:59 XX/YY RUN_ID 10 15:06:59 Command Completed"').trim()
                    def runId = string.split("RUN_ID")[1].split(" ")[1]
                    echo "$runId"
                } 
            }
        }
    }
}

注意:您可能需要改進腳本部分以處理錯誤情況。

如果您想對其進行概括,例如"RUN_ID"周圍有空格,並且始終打印出最后一列,請嘗試:

# (broken apart for readability - it's one single string)

echo 'abc def -$314,159,265,358,979,323.84 XX/YY 2277118.822881188' 
     ' RUN_ID 3321928094887362347870319429489390175' | 

{m,g}awk   '$!NF=$(NF*=!_!~NF)' FS=' RUN[_]ID '
    gawk     '$_=$(NF*=!_<NF)'  FS=' RUN[_]ID '
    mawk '$!++NF=$--NF'         FS=' RUN[_]ID '

.

3321928094887362347870319429489390175

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM