我有一个 UTF-8 格式的 HTML 文件,我想删除其中的前五行。
我尝试过使用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
我无法访问您的文件,所以我无法测试这个,但其中一个应该可以工作:
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
另外,请发布您的文件,以便我们访问并亲自尝试。这将大大加快进程。您链接的服务要求我们获得一个帐户。