คำถามติดแท็ก text-processing

การจัดการหรือตรวจสอบข้อความโดยโปรแกรมสคริปต์ ฯลฯ

10
การประมวลผลข้อความ - เข้าร่วมทุก ๆ สองบรรทัดด้วยเครื่องหมายจุลภาค
ฉันมีมากกว่า 1,000 บรรทัดในไฟล์ ไฟล์เริ่มต้นดังต่อไปนี้ (เพิ่มหมายเลขบรรทัด): Station Name Station Code A N DEV NAGAR ACND ABHAIPUR AHA ABOHAR ABS ABU ROAD ABR ฉันต้องแปลงไฟล์นี้เป็นไฟล์โดยคั่นรายการด้วยเครื่องหมายจุลภาคโดยเข้าร่วมทุกสองบรรทัด ข้อมูลสุดท้ายควรมีลักษณะดังนี้ Station Name,Station Code A N DEV NAGAR,ACND ABHAIPUR,AHA ABOHAR,ABS ABU ROAD,ABR ... สิ่งที่ฉันพยายามคือ - พยายามเขียนเชลล์สคริปแล้วก็echoใช้คอมม่าคั่นกลาง แต่ผมคิดว่าง่ายมีประสิทธิภาพหนึ่งซับจะทำผลงานได้ที่นี่อาจจะอยู่ใน/sedawk ความคิดใด ๆ

9
คุณจะรวมบรรทัดทั้งหมดที่ลงท้ายด้วยอักขระเครื่องหมายทับขวาได้อย่างไร
การใช้เครื่องมือบรรทัดคำสั่งทั่วไปเช่น sed หรือ awk เป็นไปได้หรือไม่ที่จะรวมบรรทัดทั้งหมดที่ลงท้ายด้วยอักขระที่กำหนดเช่นแบ็กสแลช? ตัวอย่างเช่นให้ไฟล์: foo bar \ bash \ baz dude \ happy ฉันต้องการเอาท์พุทนี้: foo bar bash baz dude happy

8
ดูล็อกจากล่างขึ้นบน
มีคำสั่ง linux หรือวิธีการดูบันทึกจากล่างขึ้นบนมากกว่าจากบนลงล่าง ฉันรู้tail -n <number of lines>แต่มีบางอย่างที่ฉันสามารถเลื่อนและเลื่อนจากล่างขึ้นบนได้จริงหรือ


1
Vim: การสร้างข้อความ XML“ สวย”
มีวิธีง่ายๆในviการทำให้ข้อความ XML ของคุณ "สวย" หรือไม่? ตัวอย่างเช่น: ฉันต้องการสิ่งนี้.. <person> <name>Nick</name> <age>26</age> <gender>male</gender> <occupation>doctor</occupation> </person> เป็นแบบนี้ ... <person> <name>Nick</name> <age>26</age> <gender>male</gender> <occupation>doctor</occupation> </person>

3
วิธีผสานสองไฟล์ตามการจับคู่ของสองคอลัมน์
ฉันชอบ file1: 0 AFFX-SNP-000541 NA 0 AFFX-SNP-002255 NA 1 rs12103 0.6401 1 rs12103_1247494 0.696 1 rs12142199 0.7672 และไฟล์ 2: 0 AFFX-SNP-000541 1 0 AFFX-SNP-002255 1 1 rs12103 0.5596 1 rs12103_1247494 0.5581 1 rs12142199 0.4931 และต้องการไฟล์ 3 เช่นนั้น: 0 AFFX-SNP-000541 NA 1 0 AFFX-SNP-002255 NA 1 1 rs12103 0.6401 0.5596 1 …

4
ฉันจะลบอักขระบรรทัดใหม่ที่ท้ายไฟล์ได้อย่างไร
ให้ฉันชัดเจนเกี่ยวกับอักขระขึ้นบรรทัดใหม่: $ echo Hello > file1 ; cat file1 Hello $ echo -n Hello > file2 ; cat file2 Hello$ ที่นี่คุณจะเห็นว่าfile1มีอักขระขึ้นบรรทัดใหม่ในตอนท้ายขณะที่file2ยังไม่มี ตอนนี้สมมติว่าฉันเป็นหนึ่งfile: $ cat file Hello Welcome to Unix $ และฉันต้องการที่จะเพิ่มand Linuxในตอนท้ายของไฟล์จากนั้นecho " and Linux" >> fileจะถูกเพิ่มไปยังบรรทัดใหม่ แต่ฉันต้องการบรรทัดสุดท้ายเป็นUnix and Linux ดังนั้นเพื่อหลีกเลี่ยงฉันต้องการลบอักขระบรรทัดใหม่ที่ท้ายไฟล์ ดังนั้นฉันจะลบอักขระบรรทัดใหม่ได้อย่างไรในตอนท้ายของไฟล์

4
ลบ n ไบต์แรกของไฟล์
ฉันมีปัญหามากและวิธีแก้ไขทั้งหมดที่ฉันจินตนาการได้นั้นซับซ้อน จากประสบการณ์ UNIX / Linux ของฉันต้องมีวิธีที่ง่าย ฉันต้องการที่จะลบ 31 /foo/ไบต์แรกของแต่ละแฟ้มใน แต่ละไฟล์มีความยาวเพียงพอ ฉันแน่ใจว่าใครบางคนจะส่งมอบวิธีแก้ปัญหาที่ง่ายอย่างเหลือเชื่อให้กับฉันฉันไม่สามารถจินตนาการได้ อาจจะตกใจ

3
วิธีตัด (เลือก) ฟิลด์จากการนับบรรทัดข้อความตั้งแต่สิ้นสุด?
ฉันรู้วิธีเลือกเขตข้อมูลจากบรรทัดโดยใช้คำสั่ง cut ตัวอย่างเช่นให้ข้อมูลต่อไปนี้: a,b,c,d,e f,g,h,i,j k,l,m,n,o คำสั่งนี้: cut -d, -f2 # returns the second field of the input line ผลตอบแทน: b g l คำถามของฉัน: ฉันจะเลือกเขตข้อมูลที่สองนับจากท้ายได้อย่างไร ในตัวอย่างก่อนหน้าผลลัพธ์จะเป็น: d i n

2
มีการสะกดบรรทัดคำสั่งเพื่อวางคอลัมน์ในไฟล์ CSV หรือไม่
มีไฟล์ของเนื้อหาต่อไปนี้: 1111,2222,3333,4444 aaaa,bbbb,cccc,dddd ฉันพยายามรับไฟล์เท่ากับต้นฉบับ แต่ไม่มีคอลัมน์ที่ n เช่น n = 2 (หรืออาจเป็น 3) 1111,2222,4444 aaaa,bbbb,dddd หรือสำหรับ n = 0 (หรืออาจเป็น 1) 2222,3333,4444 bbbb,cccc,dddd ไฟล์จริงสามารถเป็นกิกะไบต์ที่มีคอลัมน์ยาวนับหมื่น เช่นเคยในกรณีดังกล่าวฉันสงสัยว่าผู้วิเศษบรรทัดคำสั่งสามารถนำเสนอทางออกที่สง่างาม ... :-) ในกรณีจริงของฉันฉันต้องวางคอลัมน์แรก 2 คอลัมน์ซึ่งสามารถทำได้โดยการวางคอลัมน์แรกสองครั้งในลำดับ แต่ฉันคิดว่ามันน่าสนใจกว่าที่จะพูดคุยเล็กน้อย

3
วิธีค้นหาวงเล็บเหลี่ยมที่ไม่ตรงกันในไฟล์ข้อความ?
วันนี้ฉันได้เรียนรู้ว่าฉันสามารถใช้perl -c filenameเพื่อค้นหาวงเล็บปีกกาที่ไม่มีใครเทียบ {} ในไฟล์โดยพลการไม่จำเป็นต้องเป็นสคริปต์ Perl ปัญหาคือมันไม่ทำงานกับวงเล็บประเภทอื่น () [] และอาจ <> ฉันยังได้ทดลองกับปลั๊กอิน Vim หลายตัวที่อ้างว่าช่วยค้นหาวงเล็บเหลี่ยมที่ไม่ตรงกัน แต่ก็ยังไม่ค่อยดีนัก ฉันมีไฟล์ข้อความที่มีวงเล็บค่อนข้างน้อยและหนึ่งในนั้นหายไป! มีโปรแกรม / สคริปต์ / vim plugin / สิ่งใดบ้างที่สามารถช่วยฉันระบุวงเล็บเหลี่ยมที่ไม่มีใครเทียบได้?

10
วิธีแทรกเนื้อหาของไฟล์ลงในไฟล์อื่นก่อนรูปแบบ (เครื่องหมาย)?
File1 เนื้อหา: line1-file1 "1" line2-file1 "2" line3-file1 "3" line4-file1 "4" File2 เนื้อหา: line1-file2 "25" line2-file2 "24" Pointer-file2 "23" line4-file2 "22" line5-file2 "21" หลังจากการดำเนินการของ perl / shell script File2เนื้อหาควรเป็น: line1-file2 "25" line2-file2 "24" line1-file1 "1" line2-file1 "2" line3-file1 "3" line4-file1 "4" Pointer-file2 "23" line4-file2 "22" line5-file2 "21" เช่นวางเนื้อหาFile1ในFile2ก่อนบรรทัดที่มี "ตัวชี้"

3
ฉันจะแทนที่การเกิดขึ้นครั้งสุดท้ายของอักขระในสตริงโดยใช้ sed ได้อย่างไร
ฉันจะแทนที่การเกิดขึ้นครั้งสุดท้ายของ "-" ในสตริงที่มีช่องว่างได้sedอย่างไร? ตัวอย่างเช่น: echo $MASTER_DISK_RELEASE swp-RedHat-Linux-OS-5.5.0.0-03 แต่ฉันต้องการได้ผลลัพธ์ต่อไปนี้ (แทนที่เครื่องหมายขีดคั่นสุดท้าย [“ -“] ด้วยช่องว่าง) swp-RedHat-Linux-OS-5.5.0.0 03

5
จะแทนที่เนื้อหาของคอลัมน์ใดคอลัมน์หนึ่งด้วย awk ได้อย่างไร?
รับ: มี 40 คอลัมน์ในการบันทึกเป็น ฉันต้องการแทนที่คอลัมน์ 35 เพื่อให้คอลัมน์ 35 ถูกแทนที่ด้วยเนื้อหาของคอลัมน์ 35 และสัญลักษณ์ "$" สิ่งที่อยู่ในใจคือ: awk '{print $1" "$2" "...$35"$ "$36...$40}' มันใช้งานได้ แต่เพราะมันเป็นไปไม่ได้เมื่อจำนวนคอลัมน์มีขนาดใหญ่เท่ากับ 10k ฉันต้องการวิธีที่ดีกว่าในการทำสิ่งนี้

2
การนับจำนวนคำในไฟล์ข้อความ
ฉันมีไฟล์ข้อความที่มีทวีตและฉันจำเป็นต้องนับจำนวนครั้งที่มีการกล่าวถึงคำในทวีต ตัวอย่างเช่นไฟล์ประกอบด้วย: Apple iPhone X is going to worth a fortune The iPhone X is Apple's latest flagship iPhone. How will it pit against it's competitors? และสมมติว่าฉันต้องการนับกี่ครั้งที่คำว่า iPhone ถูกกล่าวถึงในไฟล์ ดังนั้นนี่คือสิ่งที่ฉันได้ลอง cut -f 1 Tweet_Data | grep -i "iPhone" | wc -l มันใช้งานได้จริง แต่ฉันสับสนเกี่ยวกับคำสั่ง 'wc' ในยูนิกซ์ อะไรคือความแตกต่างถ้าฉันลองทำสิ่งที่ชอบ: cut -f 1 Tweet_Data …

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