Нет, это не переоценено. На практике это является самым недооцениваемым.:-)
Моя малочисленная команда на работе, например, совместно использует машину RHEL для технической разработки: создание материала, тестируя и т.д. Все используют учетные записи отдельного пользователя, но мы также совместно используем пароль root, так как людям время от времени нужно это для быстрых задач системного администратора. Это также привело к нам умеющий полить из шланга ОС несколько раз в ее короткой продолжительности жизни. Кто-то создающий определенную версию libc удалил систему libc глупым rm
вызов. В другом любопытном инциденте отсутствовала таблица разделов. (Хорошо, это не имело никакого отношения к полномочиям.) Отдых команды заблокирован, пока поломка не фиксируется. Одно решение состоит в том, чтобы сделать, чтобы кто-то добровольно предложил поднимать задачи системного администратора. К этой точке мы не заботились слишком много, кроме позволить людям извлекать свои уроки: всем нам нужны некоторые зубные метки на наших задних частях, и это относительно недорогие зубные метки.
Действительно любопытное могло бы хотеть следовать за принципом наименьшего количества полномочия и прочитать газету Ken Thompson, "Отражения О Доверии Доверию". ("Мораль очевидна. Вы не можете доверять коду, который Вы не полностью создали сами".)
Используя sed
:
sed -n '/<Document>/,/<\/Document>/ p' yourfile.xml
Объяснение:
-n
делает sed
тихий, означая это не производит целое содержание файла,/pattern/
поиски строк включая указанный шаблон,a
,
b
(запятая), говорит sed
выполнить действие со строками от a
кому: b
(где a
и b
будьте определены путем соответствия вышеупомянутым шаблонам),p
обозначает печать и действие, выполненное на строках, которые соответствовали вышеупомянутому. Править: Если требуется дополнительно разделить пробел прежде <Document>
, это может быть сделано этот путь:
sed -ne '/ <Document>/s/^ *//' -e '/<Document>/,/<\/Document>/ p' yourfile.xml
Препятствовать тому, чтобы текст был разделен между </Document>
и следующее <Document>
Вам, вероятно, придется использовать серию sed
команды (cf. Комментарий жабр выше).
По существу sed
читает весь файл в буфер хранения (так, чтобы содержание файла можно было рассматривать как одну строку), и отмечает первое и последнее Document
теги для последующей обработки.
# version 1
# marker: HERE
cat file.xml |
sed -n '1h;1!H;${;g;s/\(<Document>.*<\/Document>\)/HERE\1HERE/g;p;}' |
sed -n -e '/HERE<Document>/,/<\/Document>HERE/ p' |
sed -e 's/^ *HERE\(<Document>\)/\1/' -e 's/\(<\/Document>\)HERE *$/\1/'
# version 2 (using the Bash shell)
# marker: $'\001'
cat file.xml |
sed -n $'1h;1!H;${;g;s/\\(<Document>.*<\\/Document>\\)/\001\\1\001/g;p;}' |
sed -n -e $'/\001<Document>/,/<\\/Document>\001/ p' |
sed -e $'s/^ *\001//' -e $'s/\001 *$//' |
cat -vet
... но я предполагаю, что все это могло быть сделано более изящно (и надежно) использование xmlstarlet
!
<Document>
. Посмотрите обновление моего ответа для более глубокого объяснения. хороший – rozcietrzewiacz 20.10.2011, 16:59</Document>
и следующее<Document>
, это будет разделено. – Gilles 'SO- stop being evil' 20.10.2011, 20:29