Как изменить сепаратор от пространства на запятую с XMLStarlet?Linux

Anonymous
Как изменить сепаратор от пространства на запятую с XMLStarlet?

Сообщение Anonymous »

Я анализирую файл: < /p>




first

12:34:56:78:90

A0:CD:EF:GH:IJ


A1:CD:EF:GH:IJ


A2:CD:EF:GH:IJ


A3:CD:EF:GH:IJ




second

98:76:54:32:10

B0:CD:EF:GH:IJ


B1:CD:EF:GH:IJ


B2:CD:EF:GH:IJ


B3:CD:EF:GH:IJ



< /code>
У меня есть следующая формула для извлечения ESSID, BSSID и клиентов:
list=$(xmlstarlet sel -T -t -m '/detection-run/wireless-network' -v 'SSID/essid' -o "|" -v 'BSSID' -o "|" -v "concat(wireless-client/client-mac, ',')" -n xmll-02.kismet.netxml)
Тем не менее, в нем будет перечислено только один клиент для каждой сети:
first|12:34:56:78:90|A0:CD:EF:GH:IJ,
second|98:76:54:32:10|B0:CD:EF:GH:IJ,
< /code>
Если я удалю часть Concat, в нем будут перечислены все клиенты, разделенные пространством: < /p>
list=$(xmlstarlet sel -T -t -m '/detection-run/wireless-network' -v 'SSID/essid' -o "|" -v 'BSSID' -o "|" -v 'wireless-client/client-mac' -n xmll-02.kismet.netxml)
< /code>
first|12:34:56:78:90|A0:CD:EF:GH:IJ A1:CD:EF:GH:IJ A2:CD:EF:GH:IJ A3:CD:EF:GH:IJ
second|98:76:54:32:10|B0:CD:EF:GH:IJ B1:CD:EF:GH:IJ B2:CD:EF:GH:IJ B3:CD:EF:GH:IJ
< /code>
How do I get the clients with a comma as a delimiter? Desired output:
first|12:34:56:78:90|A0:CD:EF:GH:IJ,A1:CD:EF:GH:IJ,A2:CD:EF:GH:IJ,A3:CD:EF:GH:IJ
second|98:76:54:32:10|B0:CD:EF:GH:IJ,B1:CD:EF:GH:IJ,B2:CD:EF:GH:IJ,B3:CD:EF:GH:IJ
< /code>
EDIT: I've also tried adding -o "," Но это только добавляет запятую в самом конце:
first|12:34:56:78:90|A0:CD:EF:GH:IJ A1:CD:EF:GH:IJ A2:CD:EF:GH:IJ A3:CD:EF:GH:IJ,
second|98:76:54:32:10|B0:CD:EF:GH:IJ B1:CD:EF:GH:IJ B2:CD:EF:GH:IJ B3:CD:EF:GH:IJ,


Подробнее здесь: https://stackoverflow.com/questions/795 ... xmlstarlet

Вернуться в «Linux»