จะลบอินสแตนซ์ทั้งหมดของสัญลักษณ์เฉพาะออกจากไฟล์ข้อความได้อย่างไร


13

ฉันมีขนาดใหญ่มาก (ประมาณครึ่งหนึ่งของ GiB เป็นไปไม่ได้ที่จะใช้ตัวแก้ไขข้อความปกติ) ไฟล์ CSV ที่มีเขตข้อมูลล้อมรอบด้วยเครื่องหมายคำพูดคู่เช่น"abc","def"แต่ต้องการไฟล์ที่ไม่มีเครื่องหมายคำพูด (ฉันแน่ใจว่านี่จะไม่ทำลายความสอดคล้องของไฟล์) เครื่องหมายจุลภาคไม่เคยถูกใช้ภายในค่าในนั้น)

วิธีลบเครื่องหมายคำพูดทั้งหมด (โดยไม่ต้องแนะนำช่องว่างในตำแหน่งของพวกเขา)?

คำตอบ:


21

tr สามารถทำได้:

tr -d \" < infile > outfile

คุณสามารถใช้sed:

sed 's/"//g' < infile > outfile

1
ทำไมคุณไม่เอาออก< infile > outfile? IMHO มันมีข้อมูลมากขึ้น
อีวาน

@Ivan ฉันคิดว่ามันน่าจะเป็นความคิดที่สอง
Chris Down

เมื่อผู้ใช้บรรทัดคำสั่งที่มีประสบการณ์เท่านั้น แม้ว่าฉันเคยใช้<มาแล้วสองสามครั้ง (เพื่อนำเข้าสคริปต์ SQL ไปยัง MySQL และ SQLite) มันจะชัดเจนทันทีสำหรับฉันที่ฉันควรใช้<ในกรณีนี้ ฉันคิดว่ามันจะเป็นการดีกว่าถ้าจะส่งคืนตัวอย่างบรรทัดคำสั่งแบบเต็มสำหรับการอ้างอิงเพิ่มเติมของผู้ที่อาจต้องการ
Ivan

@Ivan และ @Chris ฉันได้เปลี่ยนมันกลับมาแล้ว (รอการตรวจสอบ) เพื่อรวม< infile > outfileไว้หวังว่าไม่เป็นไร
donothingsuccessfully

ขอบคุณ @donothingsuccessfully ฉันพิมพ์ผิดโดยสิ้นเชิงความคิดเห็นก่อนหน้านี้เป็นที่น่าเสียดายที่ฉันไม่สามารถแก้ไขได้% -]
Ivan

5

รุ่นอื่นของคำสั่งsed :

sed -i s/\"//g file.txt
  • sed s tream ed itor

    • -i i n-place (แก้ไขไฟล์ในที่)
    • ssคำสั่ง ubstitute
    • /replacement_from_reg_exp/replacement_to_text/ คำให้การ
    • \"คำพูดนำหน้าด้วย backslash ( replace_from_reg_exp )
    • สตริงว่างระหว่าง delemiters ทับ ( replacement_to_text )
    • g g lobal (เพื่อแทนที่การเกิดขึ้นทั้งหมดในสาย)
  • file.txt ชื่อไฟล์

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