.ods
เป็นไฟล์เก็บถาวร ดังนั้นคุณจะต้องแตกไฟล์เก็บถาวร
จากเอกสาร :
โครงสร้างไฟล์ XML
เอกสารในรูปแบบไฟล์ OpenDocument จะถูกจัดเก็บเป็นไฟล์บีบอัด zip ที่มีไฟล์ XML ในการดูไฟล์ XML เหล่านี้คุณสามารถเปิดไฟล์ OpenDocument ด้วยโปรแกรม unzip ไฟล์และไดเรกทอรีต่อไปนี้มีอยู่ในไฟล์ OpenDocument:
- เนื้อหาข้อความของเอกสารอยู่ใน content.xml
ดังนั้นจึงไม่ง่ายเหมือน
[a command -insert] Alf|test -file=test.ods
เนื่องจากคุณต้องแทรกส่วน XML
$ cd ~/tmp/
$ unzip ../test.ods
Archive: test.ods
extracting: mimetype
extracting: Thumbnails/thumbnail.png
inflating: settings.xml
inflating: content.xml
inflating: meta.xml
inflating: styles.xml
inflating: manifest.rdf
creating: Configurations2/images/Bitmaps/
creating: Configurations2/toolpanel/
creating: Configurations2/progressbar/
inflating: Configurations2/accelerator/current.xml
creating: Configurations2/floater/
creating: Configurations2/statusbar/
creating: Configurations2/toolbar/
creating: Configurations2/popupmenu/
creating: Configurations2/menubar/
inflating: META-INF/manifest.xml
เมื่อคุณดู content.xml และคุณต้องการเพิ่มแถวใหม่ด้านล่างแถวสุดท้ายคุณจะต้องเพิ่มสิ่งนี้ ...
<table:table-row table:style-name="ro1">
<table:table-cell office:value-type="string" calcext:value-type="string"><text:p>a2a2a2</text:p>
</table:table-cell><table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>b2b2b2</text:p>
</table:table-cell></table:table-row>
ก่อน
<table:named-expressions/>
จากนั้นซิปไฟล์อีกครั้ง ( zip -r ../test2.ods .
จากไดเรกทอรีด้วยไฟล์)
ผลลัพธ์:
ในการแก้ไขไฟล์จากบรรทัดคำสั่งฉันใช้คำสั่งนี้ ฉันใส่ตัวอย่างใน ~ / Downloads และทำ tmp / ในนั้นเพื่อทดสอบ คำสั่งทั้งหมดที่ใช้สำหรับสิ่งนี้:
cd ~/Downloads/tmp/
unzip ../test.ods
sed 's#</table:table><table:named-expressions/>#<table:table-row table:style-name="ro1"><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>a3a3a3</text:p></table:table-cell><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>b3b3b3</text:p></table:table-cell></table:table-row>&#' content.xml > content2.xml
mv content2.xml content.xml
zip -r ../test2.ods .
สิ่งที่คุณต้องทำคือแทนที่กลุ่มข้อความด้วยตัวคุณเอง
เวอร์ชั่นใหม่ของมารยาทของ Terdon (ใช้ตัวแปรเพื่อให้อ่านง่ายขึ้น):
$ from="</table:table><table:named-expressions/>"
$ to="<table:table-row table:style-name="ro1"><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>a3a3a3</text:p></table:table-cell><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>b3b3b3</text:p></table:table-cell></table:table-row>"
$ sed "s#$from#$to$from#" content.xml
"#" เป็นตัวคั่น หากคุณมี "#" ในข้อความให้ใช้อย่างอื่น