Перемещение текста с помощью sed - PullRequest
0 голосов
/ 15 июня 2011

У меня есть XML-файл со следующим содержимым:

<query_1>false</query_1>
<query_2>true</query_2>
<query_3>true</query_3>
<query_4>false</query_4>
<query_5>false</query_5>

Можно ли реорганизовать файл с помощью sed, чтобы он брал "true" и выводил их в одну строку следующим образом:

<query>2,3</query>

С уважением, Ирек

Ответы [ 2 ]

2 голосов
/ 15 июня 2011

Полагаю, это не самое простое решение, но вы можете попробовать это:

sed -n '/<query_[0-9]*>true<\/query/{:a;s/^<query_\([0-9]*\)>.*/\1/;tb;ba;:b;H};${g;s/^\n//;s/\n/,/g};$s/.*/<query>&<\/query>/p' file

Вывод с использованием файла примера - именно то, что вам нужно:

0 голосов
/ 20 июня 2011

Следующая последовательность команд возвращает запрашиваемую строку

$ grep true input | sed 's/>//g' | cut -d _ -f 3 | printf "<query>%s</query>" `paste -d, - -`
<query>2,3</query>

Дает:

<query>2,3</query>
...