Определить пустые файлы xml?

Предполагая (как указано), что файл состоит из строки и строки, являются IP

с 1 IP на строку

sed 's/.[^.]*/0/' YourFile

С несколькими IP на строку

sed 's/\([0-9]\{1,3\}[.]\)[^.]*\(\([.][[:alnum:]]\{1,\}\)\{2\}\)/\1.0\2/g' YourFile
1
15.03.2018, 22:54
2 ответа

Попробуйте это, используя с выражением :

#!/bin/sh

for xml in *.xml; do
    bool=$(xmllint --xpath 'count(//*)=1 and string-length(//*[1])=1' "$xml")
    if [ $bool = true ]; then
        echo "$xml" >> xml_list_files
    fi
done

cat xml_list_files

Выражение проверяет, что файл имеет только один узел без какого-либо текстового содержимого. В этом случае команда возвращаетtrue

2
27.01.2020, 23:32

to identify and write all xml file names which are empty to a text file for reporting purpose

find+xmlstarletраствор:

find. -type f -name "*.xml" -exec bash -c \
'v=$(xmlstarlet sel -t -i "count(//*)=1 and //*[1][not(normalize-space())]" -o 1 -b $1);
[[ -n "$v" ]] && echo "$1" >> "empty_xml.txt"' _ {} \;

empty_xml.txtфайл должен содержать список необходимых имен файлов/путей к файлам

0
27.01.2020, 23:32

Теги

Похожие вопросы