Как разобрать xml файл в bash - PullRequest
0 голосов
/ 04 мая 2020
<plugins>
        <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <check>
                        <haltOnFailure>false</haltOnFailure>
                        <totalLineRate>85</totalLineRate>
                    </check>
                    <formats>
                        <format>html</format>
                        <format>xml</format>
                    </formats>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>cobertura</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
    </plugins>
</build>
<reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <version>3.0.0-M4</version>
        <configuration>

                    <formats>

                        <format>xml</format>
                    </formats>
                </configuration>
      </plugin>

необходимо проверить, указан ли тег "format" со значением "xml" в файле pom для плагина cobertura. попытался проанализировать файл xml в bash

temp= $(grep -n -oP '(?<=<format>)[^<]+' pom.xml)

, при этом возвращается все значение с тегом, включая html, xml. Как разобрать этот файл и проверить?

1 Ответ

0 голосов
/ 04 мая 2020

Ваш bash скрипт почти делает это! Я бы порекомендовал одно изменение:

temp=$(grep -noP '(?<=<format>)[^<]+' pom.xml | grep -om 1 xml)

Внесенное мной изменение заключается в использовании трубы * для дополнительного grep. Piping довольно полезен и позволяет вам комбинировать команды, чтобы делать много классных вещей!

Что я действительно хотел бы сделать в bash сценарии, так это использовать оператор if:

if grep -om 1 '<format>xml</format>' pom.xml
then
    echo "pom.xml contains xml format tag"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...