Как найти XML-файлы и строки комментариев, содержащие строку 'dark'? - PullRequest
0 голосов
/ 08 мая 2018
<hello>
<world>dark</world>
</hello>

Пока я пытался ...

find . -name "*.xml" -print0 | while read -d $'\0' file; do awk '{print "<!--"$0"-->"}' "$file"; done 

... что не получается.

Но кое-как, как awk для одного файла ...

awk '{print "<!--"$0"-->"}' "$file"

... отлично работает.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Чтобы охватить условие "для поиска XML-файлов и строк комментариев, содержащих строку 'dark'" в точности:

find + grep + sed решение:

find . -type f -name "*.xml" -exec sh -c \
'if grep -wq "dark" "$1"; then sed -i "s/.*dark.*/<!--&-->/" "$1"; fi' _ {} \;
0 голосов
/ 08 мая 2018

Не рекомендуется использовать awk для анализа XML-файлов. Вместо этого используйте синтаксический анализатор XML.

Вот пример с xmllint:

find -name "*.xml" -exec bash -c 'xmllint --xpath "//*/world/text()" $1 >/dev/null 2>&1 && echo $1' _ {} \;

Выражение xpath ищет тег <world>, вложенный в любой другой тег.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...