Я использую API stand4 с моим сценарием stands4
, чтобы запросить аббревиатуру и получить таблицу значений этого аббревиатуры, аббревиатуру, имя категории и имя родительской категории. Например,
# stands4
DEFINITION CATEGORY NAME PARENT CATEGORY NAME
Australian Broadcasting Corporation Companies & Firms Business
Australian Broadcasting Corporation News & Media Community
ATP Binding Cassette Physiology Medical
Activity Based Costing Military Governmental
Activity Based Costing US Government Governmental
Alcoholic Beverage Control Law & Legal Governmental
[...]
Мой грязный скрипт sed stands4
следующий
# VARIABLE TO BE SET
USER_ID=<userID> # sent by mail after registration at http://www.abbreviations.com/api.php
TOKEN_ID=<token ID> # sent by mail after registration at http://www.abbreviations.com/api.php
SPACE_SEPARATOR=60
curl -sL "http://www.stands4.com/services/v2/abbr.php?uid=$USER_ID&tokenid=$TOKEN_ID&term=$@" | \
sed '1 a\DEFINITION\tCATEGORY NAME\tPARENT CATEGORY NAME' | \
sed 's/<definition>/\n<definition>/g'| \
sed '1d;3d'| sed 's#.*<definition>\([^<]*\)</definition>.*<categoryname>\([^<]*\)</categoryname>.*<parentcategoryname>\([^<]*\)</parentcategoryname>.*#\1\t\2\t\3#' | \
sed 's#&#\&#g' | expand -t $SPACE_SEPARATOR | less
API дает мне следующее XML (для первой строки)
# curl -sL "http://www.stands4.com/services/v2/abbr.php?uid=$USER_ID&tokenid=$TOKEN_ID&term=abc"
<results>
<definition> Australian Broadcasting Corporation
</definition>
<category>FIRMS
</category>
<categoryname>Companies & Firms
</categoryname>
<parentcategory>BUSINESS
</parentcategory>
</result>
[...]
Как элегантно превратить вывод XML в таблицу столбцов без использования sed?