2010-11-14 4 views
2

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

<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> 

ответ

1

cat foo | grep "^[^<]". Назначение переменной:

v=`cat foo | grep "^[^<]"` 
+0

Спасибо большое Хачик. это было очень полезно. –

+1

Это уязвимо для любых вариантов пробелов – MarcH

+0

http://uuoc.com/ – Johnsyweb

2

cut - это неправильный инструмент. Использование 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
{ 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 
Смежные вопросы