เพิ่มบรรทัดลงในไฟล์ HTML


-2

ฉันมีไฟล์ HTML ต่อไปนี้:

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th>Users</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>citrix-xendesktop-ec2-provisioning</td>
    </tr>
    <tr>
      <td>rundeck-read-only-iam-permissions</td>
    </tr>
    <tr>
      <td>terraform_automated_python</td>
    </tr>
  </tbody>
</table>

วิธีเพิ่มบรรทัดต่อไปนี้ที่จุดเริ่มต้นของไฟล์:

<br></br>
<caption><b>HTML E-mail</b></caption>
<br></br>

ดังนั้นไฟล์สุดท้ายควรเป็น:

<br></br>
    <caption><b>HTML E-mail</b></caption>
    <br></br>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th>Users</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>citrix-xendesktop-ec2-provisioning</td>
    </tr>
    <tr>
      <td>rundeck-read-only-iam-permissions</td>
    </tr>
    <tr>
      <td>terraform_automated_python</td>
    </tr>
  </tbody>
</table>

เลือกเครื่องมือที่เหมาะสมก่อน ฉันแนะนำให้ใช้ตัวแยกวิเคราะห์ XML / HTML (xmlstarlet)
Cyrus

สำหรับการอ้างอิงโปรดดูคำเตือนเกี่ยวกับ“>”
Scott

คำตอบ:


3

คุณสามารถลอง,

echo -e "<br></br>\n\t<caption><b>HTML E-mail</b></caption>\n\t<br></br>\n$(cat FILENAME.html)" > FILENAME.html

ฉันเชื่อว่ามันจะทำงานได้ดี ตรวจสอบให้แน่ใจว่าได้ทำการสำรองข้อมูลไฟล์ของคุณก่อนในกรณีที่ แต่ฉันคิดว่ามันจะดีหวังว่ามันจะช่วย

อีกวิธีหนึ่งคือ:

sed -i '1s/^/<br></br>\n\t<caption><b>HTML E-mail</b></caption>\n\t<br></br>\n/' FILENAME.html

โซลูชันที่สองของคุณต้องการโซลูชันอื่น\nในตอนท้ายของสตริงการแทนที่และสอง\tไบต์เปลี่ยนการเยื้อง
AFH

โทรดีฉันเพิ่ม \ n เป็นคนแรก แต่ไม่ใช่คนที่สองและ \ t ในขณะที่ไม่จำเป็นสำหรับ html เลยทำซ้ำผลลัพธ์ที่ร้องขอโดย OP อย่างถูกต้อง ขอบคุณคำสั่ง "sed" ที่แก้ไขแล้วตอนนี้
Sean Davey

ขออภัยฉันไม่ได้สังเกตว่าข้อความที่ถูกเตรียมไว้ไม่ใช่สำเนาตามตัวอักษร
AFH

(1) คำตอบแรกของคุณ ( echo) ล้มเหลวหากไฟล์ html มีเครื่องหมายแบ็กสแลชใด ๆ (2) คำตอบที่สองของคุณ ( sed) ใช้ได้เฉพาะใน GNU เท่านั้น มันไม่สอดคล้องกับ POSIX ... ... ... ... ... ... ... ... ... ... ... ... ... ดูเพิ่มเติมคำเตือนเกี่ยวกับการ“>”
สกอตต์

1

บอกว่าไฟล์html1มีเนื้อหานี้

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th>Users</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>citrix-xendesktop-ec2-provisioning</td>
    </tr>
    <tr>
      <td>rundeck-read-only-iam-permissions</td>
    </tr>
    <tr>
      <td>terraform_automated_python</td>
    </tr>
  </tbody>
</table>

และไฟล์html2มีเนื้อหานี้

<br></br>
<caption><b>HTML E-mail</b></caption>
<br></br>

ผสานทั้งสองเข้าด้วยกัน cat

  • คุณเพียงแค่ต้องcat (concatenate)ทั้งไฟล์และเปลี่ยนเส้นทางไปยังไฟล์ที่สามพูดhtml3

    cat html2 html1 > html3

    จะเกิดอะไรขึ้นที่นี่เป็นที่เนื้อหาทั้งสองhtml2แล้วhtml1จะพิมพ์ไป STDOUT ในการสั่งซื้อผ่านและแล้วในที่สุดเนื้อหาจะถูกเปลี่ยนเส้นทางไปยังไฟล์ที่ใช้ประกอบการเปลี่ยนเส้นทางhtml3>

  • NOTE : จำลำดับที่คุณส่งไฟล์เป็นสิ่งสำคัญที่จะกล่าวว่า

    cat html2 html1 > html3

    prepends html2 to html1แต่

    cat html1 html2 > html3

    prepends html1 to html2 หรือพูดอย่างอื่น postpends html2 to html1

  • หากคุณต้องการคุณสามารถเปลี่ยนเส้นทางไปที่html1เท่านั้นโดยไม่จำเป็นต้องมีfile3สิ่งนี้

    cat html2 html1 > html1

อย่าลังเลที่จะเพิ่มรายละเอียดเพิ่มเติม


ใช่ฉันรู้วิธีนั้นแม้ว่าจะมีวิธีใดจาก terminal เช่นคำสั่ง sed
Milister

ในกรณีนี้ดูคำตอบโดย @SeanDavey
C0deDaedalus

@Milister: คุณกำลังพูดถึงอะไร คำตอบนี้คือ '' จากเทอร์มินัล '' เช่นเดียวกับsedวิธีแก้ปัญหาคือ
สกอตต์

@ C0deDaedalus: cat html2 html1 > html1คำสั่งของคุณไม่ทำงาน html1ในความเป็นจริงมันจะทำลาย ดูคำเตือนเกี่ยวกับการ“>”
สกอตต์

@Scott โซลูชัน sed ทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน
Milister
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.