簡體   English   中英

以bash排序輸出

[英]Sort output in bash

我有以下腳本,通過查看它們的pom.xml來檢查我的不同Maven項目的父版本。

#!/bin/bash
# Loop to find all pom.xml
for i in `find . ! -path "*/target/*" -type f -name pom.xml`
do
    # Filter the parent artifactId.
    grep -q 'IC_Maven_JEE_Parent\|IC_Maven_Parent' $i
    if [ "$?" -eq 0 ]; then
    # Print parent ID, version value, and then pom.xml path.
    echo $(grep -o 'IC_Maven_JEE_Parent\|IC_Maven_Paren' $i) $(echo -e 'setns x=http://maven.apache.org/POM/4.0.0\ncat /x:project/x:parent/x:version/text()' | xmllint --shell $i | grep -v /) $i
    fi
done

我的測試文件夾中的輸出如下所示,它是未排序且無信息的。

IC_Maven_JEE_Parent ------- 1.4.44 ./AGS-DEF-JOB1/pom.xml
IC_Maven_JEE_Parent ------- 1.4.44 ./AGS-SITE-JOB1/pom.xml
IC_Maven_Paren ------- 1.5.44 ./AGS-SITESSL-JOB1/pom.xml
IC_Maven_JEE_Parent ------- 6.2 ./AIRR-COMMODITIES-JOB1/pom.xml
IC_Maven_JEE_Parent ------- 6.2 ./AIRR-DEF14-JOB1/pom.xml
IC_Maven_Paren ------- 1.4.38 ./pom.xml

我希望對輸出進行排序(首先根據父ID,然后根據版本值,最后根據路徑),以便我知道升級的優先級。 它應如下所示。

IC_Maven_JEE_Parent ------- 1.4.44 ./AGS-DEF-JOB1/pom.xml
IC_Maven_JEE_Parent ------- 1.4.44 ./AGS-SITE-JOB1/pom.xml
IC_Maven_JEE_Parent ------- 6.2 ./AIRR-COMMODITIES-JOB1/pom.xml
IC_Maven_JEE_Parent ------- 6.2 ./AIRR-DEF14-JOB1/pom.xml
IC_Maven_Paren ------- 1.4.38 ./pom.xml
IC_Maven_Paren ------- 1.5.44 ./AGS-SITESSL-JOB1/pom.xml

我的帖子的更新(6月8日14:13)。

我實現的最接近點是將輸出保存到文件中,然后對文件進行排序,如以下腳本所示:

#!/bin/bash
for i in `find . ! -path "*/target/*" -type f -name pom.xml`
do
    grep -q 'IC_Maven_JEE_Parent\|IC_Maven_Parent' $i
    if [ "$?" -eq 0 ]; then
    echo $(grep -o 'IC_Maven_JEE_Parent\|IC_Maven_Paren' $i) $(echo -e 'setns x=http://maven.apache.org/POM/4.0.0\ncat /x:project/x:parent/x:version/text()' | xmllint --shell $i | grep -v /) $i
    fi
done > check.txt
sort ./check.txt

您只需在循環末尾添加sort即可對輸出進行排序。

#!/bin/bash
for i in `find . ! -path "*/target/*" -type f -name pom.xml`
do
    grep -q 'IC_Maven_JEE_Parent\|IC_Maven_Parent' $i
    if [ "$?" -eq 0 ]; then
    echo $(grep -o 'IC_Maven_JEE_Parent\|IC_Maven_Paren' $i) $(echo -e 'setns x=http://maven.apache.org/POM/4.0.0\ncat /x:project/x:parent/x:version/text()' | xmllint --shell $i | grep -v /) $i
    fi
done | sort

暫無
暫無

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

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