Score:2

แยกชื่อไฟล์จากองค์ประกอบ href

ธง in

ฉันมีเอกสารที่มีรายการไฟล์ วิธีง่ายๆ ในการแยกชื่อไฟล์ภายในองค์ประกอบ href (โดยไม่ต้องใส่เครื่องหมายอัญประกาศ) และคัดลอกลงในรายการโดยคั่นด้วยตัวแบ่งบรรทัดคืออะไร

<manifest>
<item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/>
<item id="css" href="845214570.css" media-type="text/css"/>
<item id="cover-image" href="845214570.jpg" media-type="image/jpeg"/>
<item id="nav" href="nav.xhtml" media-type="application/xhtml+xml" properties="nav"/>
<item id="cover" href="cover.xhtml" media-type="application/xhtml+xml"/>
<item id="author" href="author.xhtml" media-type="application/xhtml+xml"/>
<item id="title" href="title.xhtml" media-type="application/xhtml+xml"/>
<item id="copy" href="copy.xhtml" media-type="application/xhtml+xml"/>
<item id="contents" href="contents.xhtml" media-type="application/xhtml+xml"/>
<item id="preface" href="preface.xhtml" media-type="application/xhtml+xml"/>
<item id="ack" href="ack.xhtml" media-type="application/xhtml+xml"/>
<item id="ch1" href="ch1.xhtml" media-type="application/xhtml+xml"/>
<item id="ch2" href="ch2.xhtml" media-type="application/xhtml+xml"/>
<item id="ch3" href="ch3.xhtml" media-type="application/xhtml+xml"/>
<item id="ch4" href="ch4.xhtml" media-type="application/xhtml+xml"/>
<item id="ch5" href="ch5.xhtml" media-type="application/xhtml+xml"/>
<item id="ch6" href="ch6.xhtml" media-type="application/xhtml+xml"/>
<item id="ch7" href="ch7.xhtml" media-type="application/xhtml+xml"/>
<item id="ch8" href="ch8.xhtml" media-type="application/xhtml+xml"/>
<item id="ch9" href="ch9.xhtml" media-type="application/xhtml+xml"/>
<item id="ch10" href="ch10.xhtml" media-type="application/xhtml+xml"/>
<item id="ch11" href="ch11.xhtml" media-type="application/xhtml+xml"/>
<item id="app" href="app.xhtml" media-type="application/xhtml+xml"/>
<item id="appb" href="appb.xhtml" media-type="application/xhtml+xml"/>
<item id="appc" href="appc.xhtml" media-type="application/xhtml+xml"/>
<item id="index" href="index.xhtml" media-type="application/xhtml+xml"/>
<item id="img-f0019-01" href="f0019-01.jpg" media-type="image/jpeg"/>
<item id="img-f0027-01" href="f0027-01.jpg" media-type="image/jpeg"/>
<item id="img-f0029-01" href="f0029-01.jpg" media-type="image/jpeg"/>
</manifest>
Score:6
ธง in

สำหรับไฟล์ XML ที่มีรูปแบบง่ายๆ นี้ คุณสามารถใช้ เกรป:

grep -Po 'href="\K[^"]*' file.xml > filenames.lst

แต่ถ้าคุณมีความซับซ้อนมากกว่านี้ xmlคุณทำได้และควรเลือกแบบที่เหมาะสม xml parser เช่น xmlstarlet:

xmlstarlet เซล -t -v '//item/@href' -n file.xml > filenames.lst

สามารถติดตั้งผ่าน

sudo apt ติดตั้ง xmlstarlet

ตามที่คุณได้แท็กคำถามของคุณด้วย หลามแน่นอน คุณสามารถใช้สิ่งนั้นได้เช่นกัน:

#!/usr/bin/env python3
นำเข้า xml.etree.ElementTree เป็น ET
รูท = ET.parse('file.xml')
สำหรับรายการใน root.findall('.//item'):
    พิมพ์ (item.attrib ['href'])
minto avatar
in flag
grep ทำงานได้ดี ขอขอบคุณ.
minto avatar
in flag
สำหรับ python (ฉันมี python 2.x) มันแสดงข้อผิดพลาด `./extract.py ./extract.py:4: FutureWarning: การค้นหานี้ใช้งานไม่ได้ใน 1.3 และรุ่นก่อนหน้า และจะได้รับการแก้ไขในรุ่นต่อๆ ไป หากคุณใช้พฤติกรรมปัจจุบัน ให้เปลี่ยนเป็น './/item' สำหรับรายการใน root.findall('//item'):` ฉันเปลี่ยน แต่ไม่มีการพิมพ์ผลลัพธ์ใด ๆ
pLumo avatar
in flag
ฉันเปลี่ยนให้เข้ากันได้กับไพ ธ อนเวอร์ชันเก่า
hr flag
อีกตัวเลือกหนึ่งที่ฉันเพิ่งค้นพบคือ `xq` จาก [yq suite](https://github.com/kislyuk/yq) ซึ่งเปิดใช้งานการสืบค้นแบบ JSON บนเอกสาร xml เช่น `xq -r '.manifest.item[] | "@href"' file.xml`
bac0n avatar
cn flag
...หรือ `hxselect -s \n -c 'item::attr(href)'

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา