Напишите скрипт строки cmd для разбора файла xml - PullRequest
1 голос
/ 21 января 2010

Что было бы лучшим решением для проверки (из командной строки с помощью скрипта), если определенный XML-файл содержит эту строку:

<endpoint uri="endpoint.php" class="flex.messaging.endpoints.AMFEndpoint"/>

или эта строка

<!-- <endpoint uri="endpoint.php" class="flex.messaging.endpoints.AMFEndpoint"/> -->

и остановить выполнение, если найден второй (закомментированный)?

Thx, мартин

Ответы [ 2 ]

4 голосов
/ 21 января 2010

Одна строка или несколько строк? Если первое, вы можете использовать grep.

Обновление : Кажется, есть некоторые варианты с поддержкой XML, такие как xgrep , xmltwig и xmlstarlet .

0 голосов
/ 21 января 2010

при условии, что шаблон встречается в одной строке

#!/bin/bash
awk '
/<endpoint uri=.*endpoint.php.*class.*flex.messaging.endpoints.AMFEndpoint/ && /<!--/{
    exit
}
/<endpoint uri=.*endpoint.php.*class.*flex.messaging.endpoints.AMFEndpoint/{
    # to execute external script inside awk, uncomment below
    #cmd = "myscript.sh"
    #system(cmd)
} 
' file

ИЛИ вы можете вернуть код обратно в оболочку

#!/bin/bash
var=$(awk '
/<endpoint uri=.*endpoint.php.*class.*flex.messaging.endpoints.AMFEndpoint/ && /<!--/{
    print 1
}
/<endpoint uri=.*endpoint.php.*class.*flex.messaging.endpoints.AMFEndpoint/{
    print 0
} 
' file)
[ "$var" -eq 1 ] && exit
[ "$var" -eq 0 ] && ./myscript.sh
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...