Использование cut в скрипте оболочки - PullRequest
2 голосов
/ 14 ноября 2010

У меня есть имя файла foo. Этот файл содержит некоторый текст (показан ниже). Подскажите, пожалуйста, как мне получить строку "Я не создал домашнюю страницу". в переменную. Я использовал команду variable='cat foo | cut -d ">" -f 3'. Вывод «Я не создал домашнюю страницу». с множеством новых строк в нем. Пожалуйста, дайте мне знать, если вы можете сказать мне способ получить строку без каких-либо новых строк. Большое спасибо.

<HTML>

<HEAD> 
<META HTTP-EQUIV="Content-Type" CONTENT="text/html>
<META HTTP-EQUIV="resource-type" CONTENT="document">
</HEAD>

<BODY>

I have not created a home page.

</BODY>

</HTML>

Ответы [ 3 ]

2 голосов
/ 14 ноября 2010

вырезать не тот инструмент. Используйте awk:

cat >> _.awk << "EOF"
/<BODY>/               { found=1; next }
/<\/BODY>/ && found==1 { exit 0 }
found==1               { if ($1) print $0 }
EOF

awk -f _.awk foo

В идеале вы должны использовать настоящий XML-парсер, такой как DOM-парсер

1 голос
/ 14 ноября 2010
{ xmlstarlet sel -N html='http://www.w3.org/1999/xhtml' -t -m //html:body -v . <(tidy -asxml input.html) | tr -d '\n' ; } 2> /dev/null
1 голос
/ 14 ноября 2010

cat foo | grep "^[^<]".Чтобы назначить переменную:

v=`cat foo | grep "^[^<]"`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...