2

У меня есть HTML-файл в формате UTF-8, и я хочу удалить первые пять строк из него.

Я пытался использовать sed но в этом случае он не работает:

sed  "1,5d" Result.html>small2

Это на самом деле работает для других файлов, но не здесь. Я не могу использовать tail потому что он удаляет из конца файла, и сайт может быть изменен позже.

это мой файл

    HTTP/1.1 200 OK
    Cache-Control: private
    Content-Length: 176073
    Content-Type: text/html; charset=utf-8
    Server: Microsoft-IIS/7.5
    X-AspNet-Version: 4.0.30319
    Set-Cookie: ASP.NET_SessionId=jaq52r5vsd04zvffokbutu1q; path=/; HttpOnly
    X-Powered-By: ASP.NET
    Date: Thu, 29 Nov 2012 06:41:59 GMT
    Connection: close

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

ссылка на файл: 4shared.com/document/U8yRa19I/Result.html вот результат od -c Result.html:

0000000   H   T   T   P   /   1   .   1       2   0   0       O   K  \r
0000020       C   a   c   h   e   -   C   o   n   t   r   o   l   :    
0000040   p   r   i   v   a   t   e  \r       C   o   n   t   e   n   t
0000060   -   L   e   n   g   t   h   :       1   7   6   0   7   3  \r
0000100       C   o   n   t   e   n   t   -   T   y   p   e   :       t
0000120   e   x   t   /   h   t   m   l   ;       c   h   a   r   s   e
0000140   t   =   u   t   f   -   8  \r       S   e   r   v   e   r   :
0000160       M   i   c   r   o   s   o   f   t   -   I   I   S   /   7
0000200   .   5  \r       X   -   A   s   p   N   e   t   -   V   e   r
0000220   s   i   o   n   :       4   .   0   .   3   0   3   1   9  \r
0000240       S   e   t   -   C   o   o   k   i   e   :       A   S   P
0000260   .   N   E   T   _   S   e   s   s   i   o   n   I   d   =   j
0000300   a   q   5   2   r   5   v   s   d   0   4   z   v   f   f   o
0000320   k   b   u   t   u   1   q   ;       p   a   t   h   =   /   ;
0000340       H   t   t   p   O   n   l   y  \r       X   -   P   o   w
0000360   e   r   e   d   -   B   y   :       A   S   P   .   N   E   T
0000400  \r       D   a   t   e   :       T   h   u   ,       2   9    
0000420   N   o   v       2   0   1   2       0   6   :   4   1   :   5
0000440   9       G   M   T  \r       C   o   n   n   e   c   t   i   o
0000460   n   :       c   l   o   s   e  \r      \r

1 ответ1

1

У меня нет доступа к вашему файлу, поэтому я не могу проверить это, но один из них должен работать:

gawk 'NR>5' Result.html>small2
perl -ne 'print if $.>5' Result.html>small2

Если они не работают, я сомневаюсь, что это проблема с кодировкой, у вас могут быть странные символы, которые все портят. попробуйте передать ваш файл через od чтобы проверить:

od -c Result.html | more

ОБНОВИТЬ:

В выводе od -c я вижу, что у вас есть строки в стиле mac, которые заканчиваются символом возврата каретки (\r), а не переводом строки (\n). Итак, попробуйте изменить их на \n и снова запустить sed или одну из других команд:

perl -ne 's/\r/\n/g; print' Results.html | gawk 'NR>5' > small2

Кроме того, пожалуйста, опубликуйте свой файл, чтобы мы могли получить к нему доступ и попробовать его сами. Это значительно ускорит процесс. Служба, на которую вы ссылаетесь, требует, чтобы мы получили учетную запись.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .