Непонимание терминального трубопровода

Непонимание терминального трубопровода

Друзья, у меня есть несколько вопросов по этой команде:

 echo 'cat //item/*[local-name()="id"]/text()' | xmllint --shell test.xml | sed '1 d;$ d;/^ -------$/ d' | sort | uniq --repeated

Я думал, что конвейеризация команд работает слева направо. Я сбит с толку тем, что catкоманда используется ни на чем ( catкоманда, которую я видел, обычно используется с примером файла, cat test.xml).

Кроме того, я не совсем уверен, что cat //item/*[local-name()="id"]/text()делает, может кто-нибудь объяснить? Я знаю, что это в основном делает cat против шаблона XPath, но это выглядит запутанным, особенно с другими каналами, и XPath не работает ни против чего (опять же, он обычно используется с файлами, такими как xml, html и т. д.).

Я вообще-то новичок в sedкомандовании, может кто-нибудь объяснить, что это значит sed '1 d;$ d;/^ -------$/ d'?

Спасибо.

Связанный контент