วิธีผสานสองไฟล์ในแถวที่สอดคล้องกันได้อย่างไร


9

ตอนนี้ฉันมีสองไฟล์:

aaaa.txt:

a=0;
b=1;
c=2;

bbbb.txt:

d=3
e=4
f=5

ฉันต้องการที่จะผสานaaaa.txtและการbbbb.txtcccc.txt

cccc.txt ดังต่อไปนี้:

a=0;d=3
b=1;e=4
c=2;f=5

ดังนั้นฉันจะทำอะไรได้บ้าง

คำตอบ:


13

คุณสามารถใช้วางสำหรับสิ่งนี้:

paste -d '\0' aaaa.txt bbbb.txt > cccc.txt

จากคำถามของคุณปรากฏว่าไฟล์แรกมี;ในตอนท้าย หากไม่เป็นเช่นนั้นคุณสามารถใช้สิ่งนั้นเป็นตัวคั่นโดยใช้-d ';'แทน

โปรดทราบว่าในทางตรงกันข้ามกับสิ่งที่เราคิดว่า-d '\0'มันไม่ได้ถูกวางด้วยอักขระ NUL เป็นตัวคั่น แต่ใช้ตัวคั่นที่ว่างเปล่า นั่นคือวิธีมาตรฐานในการระบุตัวคั่นที่ว่างเปล่า pasteการใช้งานบางอย่างเช่น GNU pasteอนุญาตให้ทำเช่นpaste -d ''นั้น แต่มันไม่ได้เป็นแบบมาตรฐานหรือแบบพกพา (การใช้งานอื่น ๆ จะรายงานข้อผิดพลาดเกี่ยวกับตัวคั่นที่หายไปหากคุณใช้paste -d '')


@ Chris Down - ขอบคุณมากมันใช้งานได้ดี แต่อีกคำถาม: awk '{sed' s /.*,/ 999 / g '}' cccc.txt ทำไมมันถึงส่งคืน awk: {sed s /.* , / 999 / g} awk: ^ ข้อผิดพลาดทางไวยากรณ์ มีอะไรผิดปกติกับมัน?
binghenzq

ฉันไม่ได้โดยสิ้นเชิงแน่ใจว่าสิ่งที่คุณกำลังพยายามที่จะทำ แต่คุณก็ไม่สามารถผ่านไป sed awk เช่นนั้น ...
คริสลง

@ Chris Down - ฉันเข้าใจแล้ว
binghenzq

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