2016-09-12 3 views
-2

У меня есть несколько файлов XML со всем содержимым в одной строке. Я хочу объединить часть между <p1> и </p1> тегами разных файлов в одном файле. Можно ли это сделать с помощью awk?awk в одной строке для определенной подстроки, а затем слияние

+0

Тест: 'Grep -o ' *' входной_файл *> outputfile' – user000001

+1

Да, это, скорее всего, возможно, хотя вы должны показать нам пример, чтобы сделать ваш вопрос более ясным. Было бы также хорошо видеть, что вы пробовали до сих пор. Имейте в виду, что AWK не предназначен для обработки XML, поэтому вполне вероятно, что любое решение сломается при изменении ввода. –

+0

Это довольно не по теме на SO ... –

ответ

1

Попробуйте cat * | awk -F"<p1>" '{print $2;}' | awk -F"</p1>" '{print $1;}' > output.txt

+0

Этот подход может быть реализован как: 'awk -v RS =" ( |) "'FNR% 2 == 0 {print $ 1}' * .xml' –

1

Это трудно понять, что должно быть сделано в отношении мелких ошибок в файле ввода. Решение grep -o потерпит неудачу для ввода с 2 параграфами на 1 строку, и что вы хотите, если найдено <p1> и </p1> отсутствует?
Попробуйте awk (замечание @James) или sed:

sed 's#</p1>#\n#g' xmlfiles | sed -n '/<p1>/ s#.*<p1>##p' 
Смежные вопросы