ลบบรรทัดแรกออกจากไฟล์ Unicode html


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

ฉันแค่ต้องการลบ 10 บรรทัดที่อยู่ก่อนหน้าแท็ก <html>
Arash

คุณหมายถึงอะไรโดย "ไม่ทำงาน"?
choroba

ทดสอบ ive sed ในไฟล์อย่างง่ายและมันยอดเยี่ยม แต่ในไฟล์ uni มันไม่ได้ทำในสิ่งที่ฉันคิดว่ามันลบบรรทัดในรูปแบบ 2 ไบต์ แต่สิ่งที่ฉันต้องการลบบรรทัดนี้เช่นบรรทัดนี้: "HTTP / 1.1 200 OK" ในยูนิโค้ด คือ "00042 42157 .. " (ตัวอย่าง) และฉันต้องการลบบรรทัด hedears นี้ 10 บรรทัดจากจุดเริ่มต้นของไฟล์ tnx
Arash

1
ฉันไม่สามารถจริงๆเห็นสิ่งที่คุณหมายถึงหรือว่าทำไมมันไม่ควรจะทำงานตามที่เป็น tail -n +10 Result.htmlแต่คุณอาจจะลองเครื่องมือที่แตกต่างกันและดูว่ามันจะช่วยให้: tailคำสั่งนี้ข้าม 10 บรรทัดแรกเช่นเดียวกับที่คุณต้องการ (มันไม่ "นับถอยหลัง" จากจุดสิ้นสุดในรูปแบบนี้)
Daniel Andersson

tnx ive ลองตอนนี้ แต่ไม่มีอะไรเปลี่ยนแปลง และ i cat ให้ไฟล์ แต่ไฟล์ว่างเปล่า: tail -n +10 Result.html ไม่มีอะไรเปลี่ยนแปลงและ tail -n +10 Result.html> ams, ams ว่างเปล่า
Arash

คำตอบ:


1

ฉันไม่สามารถเข้าถึงไฟล์ของคุณดังนั้นฉันจึงไม่สามารถทดสอบสิ่งนี้ได้ แต่อย่างใดอย่างหนึ่งต่อไปนี้ควรใช้งานได้:

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

หากพวกเขาใช้การไม่ได้ฉันสงสัยว่ามันเป็นปัญหาของการเข้ารหัสคุณอาจมีตัวละครแปลก ๆ ที่ทำให้เรื่องวุ่นวายเกิดขึ้น ลองส่งไฟล์ของคุณผ่านodเพื่อตรวจสอบ:

od -c Result.html | more

UPDATE:

ฉันเห็นในผลลัพธ์ของod -cสิ่งที่คุณมีบรรทัดสไตล์ mac ที่ลงท้ายด้วย carriage return (\ r) และไม่ใช่ line feed (\ n) ดังนั้นให้ลองเปลี่ยนเป็น \ n และใช้คำสั่ง sed หรือคำสั่งอื่นอีกคำสั่งหนึ่ง:

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

นอกจากนี้โปรดโพสต์ไฟล์ของคุณเพื่อให้เราสามารถเข้าถึงและลองด้วยตนเอง มันจะเพิ่มความเร็วของกระบวนการอย่างมาก บริการที่คุณเชื่อมโยงเพื่อให้เราได้รับบัญชี


ฉันไม่สามารถรับคำตอบได้และไฟล์ขนาดเล็กทั้งสองนั้นว่างเปล่า :(
Arash

ขอบคุณคุณ tank ขอบคุณ uuuu,: - * :) ในที่สุดมันก็ใช้งานได้,
Arash

ฉันไม่สามารถลงคะแนนได้ :( เพราะมันต้องมีชื่อเสียงอย่างน้อย 15 แห่งฉันเพิ่งมี 8 แต่เร็ว ๆ นี้เมื่อฉันได้รับ 15 ฉันจะขอบคุณความโปรดปรานของคุณ;) ขอขอบคุณอีกครั้งและขอบคุณ 1 สิ่งที่ perl กำลังทำอยู่? เพิ่งเปลี่ยน \ r เป็น \ n ?? ทำไมก่อนหน้านั้นเราจึงไม่สามารถใช้ awk ได้? tnx
Arash

2
ใช่ Perl เป็นเพียงการเปลี่ยนแปลงไป\r \nคุณไม่สามารถใช้เพ่งพิศหรือเซดเพราะพวกเขาใช้\nในการกำหนดสาย เนื่องจากไม่มี\nไฟล์อยู่ในไฟล์ของคุณเซดและเพ่งมองมันจึงรวมเป็นหนึ่งบรรทัด ดังนั้นขอให้ลบ 5 บรรทัดแรกผลลัพธ์เป็นไฟล์ว่างเนื่องจากมีเพียงหนึ่งบรรทัดในไฟล์ต้นฉบับ
terdon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.