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

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

3
จะลบคอลัมน์หรือหลายคอลัมน์ออกจากไฟล์โดยใช้คำสั่ง shell ได้อย่างไร
ไฟล์ของฉัน ARCHIVE B1_NAME B2_NAME B3_NAME ELEMENT INFO_NAM WERT PROCID -------- -------- -------- -------- -------- -------- ---- ------ 15MinAvg AIRSS 33-GIS DMDMGIS1 I MvAvr15m 1123 CP 15MinAvg AIRSS 33-GIS DMDMGIS1 P MvAvr15m 2344 CP 15MinAvg AIRSS 33-GIS DMDMGIS1 Q MvAvr15m 4545 CP 15MinAvg AIRSS 33-GIS DMDMGIS2 I MvAvr15m 6576 CP 15MinAvg …

5
จะรับค่าสัมบูรณ์โดยใช้ awk ได้อย่างไร
หากฉันมีวันที่ด้านล่างสองวัน: 2015-09-12,2015-08-13 และฉันต้องการได้จำนวนวันระหว่างพวกเขาฉันจะใช้รหัสด้านล่าง: awk -F'[-,]' '{print 360*($4-$1)+30*($5-$2)+($6-$3)}' ผลลัพธ์สำหรับรหัสนี้จะเป็น-29จริงในขณะที่ความแตกต่างคือ29

5
ลบบรรทัดที่ซ้ำกันในขณะที่รักษาลำดับของบรรทัด
[root@server]# awk '!seen[$0]++' out.txt > cleaned awk: (FILENAME=out.txt FNR=8547098) fatal error: internal error Aborted [root@server]# "" เซิร์ฟเวอร์ "" มี: 8 GByte RAM + 16 GByte SWAP, x> 300 GByte พื้นที่ว่าง, amd64, CPU ของเดสก์ท็อป ลินุกซ์ทางวิทยาศาสตร์ 6.6 ไม่มีอะไรอื่นที่จะทำเพื่อให้โหลด อ๊ะยกเลิกหลังจากนั้นสองสามวินาที .. out.txt คือ ~ 1.6 GByte GNU Awk 3.1.7 คำถาม : ฉันจะลบบรรทัดที่ซ้ำกันในขณะที่รักษาลำดับของบรรทัดได้อย่างไร ตัวพิมพ์เล็กก็สำคัญเช่นกัน: …

9
กรองหรือไพพ์บางส่วนของไฟล์
ฉันมีไฟล์อินพุตที่มีบางส่วนและถูกแบ่งเขตด้วยแท็กเริ่มต้นและแท็กสิ้นสุดตัวอย่างเช่น: line A line B @@inline-code-start line X line Y line Z @@inline-code-end line C line D ฉันต้องการนำการแปลงไปใช้กับไฟล์นี้เพื่อให้บรรทัด X, Y, Z ถูกกรองผ่านคำสั่งบางอย่าง ( nlตัวอย่างเช่น) แต่ส่วนที่เหลือของบรรทัดนั้นไม่ผ่านการเปลี่ยนแปลง โปรดสังเกตว่าnl(จำนวนบรรทัด) สะสมสถานะข้ามบรรทัดดังนั้นจึงไม่ใช่การแปลงแบบสแตติกที่ถูกนำไปใช้กับแต่ละบรรทัด X, Y, Z ( แก้ไข : มันชี้ให้เห็นว่าnlสามารถทำงานในโหมดที่ไม่ต้องการสถานะสะสม แต่ฉันแค่ใช้nlเป็นตัวอย่างในการทำให้คำถามง่ายขึ้นในความเป็นจริงคำสั่งเป็นสคริปต์ที่กำหนดเองที่ซับซ้อนมากขึ้นสิ่งที่ฉันกำลังมองหา for เป็นคำตอบทั่วไปสำหรับปัญหาในการใช้ตัวกรองมาตรฐานกับส่วนย่อยของอินพุตไฟล์ ) ผลลัพธ์ควรมีลักษณะดังนี้: line A line B 1 line X 2 line Y 3 …

3
รูปแบบการจับคู่ sed ครั้ง N
ฉันต้องการแบ่งไฟล์เป็นชิ้น ๆ ละ 2 คำ $cat tmp word1 word2 word3 word4 word5 word6 word7 $sed -e 's/word. word. /&\n/g' tmp word1 word2 word3 word4 word5 word6 word7 $sed -e 's/word. \{2\}/&\n/g' tmp word1 word2 word3 word4 word5 word6 word7 ฉันคาดว่าคำสั่งสุดท้ายจะให้ผลลัพธ์เหมือนกับคำสั่งก่อนหน้า เกิดอะไรขึ้น?

5
การแทนที่รูปแบบการจับคู่เคสด้วย sed
ฉันมีซอร์สโค้ดกระจายข้ามหลายไฟล์ มันมีรูปแบบที่ฉันจำเป็นต้องเปลี่ยนด้วยabcdefpqrstuvxyz รูปแบบอาจจะAbcdef(กรณีประโยค) Pqrstuvxyzแล้วจะต้องถูกแทนที่ด้วย รูปแบบอาจจะAbCdEf(กรณีสลับ) PqRsTuVxYzแล้วจะต้องถูกแทนที่ด้วย กล่าวโดยย่อคือฉันต้องจับคู่กรณีของรูปแบบต้นทางและใช้รูปแบบปลายทางที่เหมาะสม ฉันจะใช้สิ่งนี้sedกับเครื่องมืออื่นได้อย่างไร

2
ทำไมคำสั่ง xargs นี้ไม่ทำงาน
ฉันต้องการลบส่วนขยาย. sh ทั้งหมดเพื่อทำสิ่งนี้: ls *.sh | xargs -I {} mv {} `basename {} .sh` อย่างไรก็ตามมันไม่ทำงานมันจะทำงานเหมือนbasenameส่งคืนชื่อไฟล์ที่ไม่เปลี่ยนแปลง ทำไมมันเป็นเช่นนั้น ตัวอย่างเช่นงานนี้: ls *.sh | xargs -I {} echo `basename {}.jpg .jpg`; แก้ไข : วิธีแก้ไข: อัญประกาศเดี่ยวป้องกัน`basename ...`การประเมินผลโดยเชลล์ก่อนที่คำสั่งจะรัน ls *.sh | xargs -I {} sh -c 'mv {} `basename {} .sh`'

3
วิธีแปลงไฟล์ทั้งหมดในสาขาระบบไฟล์เป็นกลุ่มระหว่างรูปแบบตัวแบ่งบรรทัดของ Unix และ Windows
ทุกคนรู้ :-) ว่าในบรรทัดไฟล์ข้อความธรรมดาของ Windows จะถูกยกเลิกด้วย CR + LF และใน Unix & Linux - ด้วย LF เท่านั้น ฉันจะแปลงไฟล์โค้ดต้นฉบับทั้งหมดจากรูปแบบหนึ่งเป็นรูปแบบอื่นและสำรองอย่างรวดเร็วได้อย่างไร

3
-f, แทรกตัวแบ่งบรรทัดหลังจากบันทึกไม่ได้ใช้งานเป็นเวลา 3 วินาที?
เมื่อทำ a tail -f error.log, วิธีแทรกเส้นแบ่งโดยทางโปรแกรมหลังจากไม่มีสิ่งใดถูกผนวกเข้ากับไฟล์เป็นเวลา 3 วินาที? (เห็นได้ชัดว่าเมื่อมีการเพิ่มตัวแบ่งบรรทัดหนึ่งบรรทัดไม่ควรเพิ่มตัวแบ่งบรรทัดอื่น ๆ จนกว่าจะมีการเพิ่มบรรทัดข้อความอื่น ๆ ลงในไฟล์บันทึก) ตัวอย่างเช่นบรรทัดเหล่านี้ถูกผนวกเข้ากับ error.log: foo bar boo [[wait 4 seconds]] 2far 2foo 2bar 2boo [[wait 40 seconds]] 2far นี่จะเป็นผลลัพธ์ในคอนโซล: foo bar boo 2far 2foo 2bar 2boo 2far

7
ตรวจสอบว่าไฟล์ทุกบรรทัดเกิดขึ้นในไฟล์อื่นหรือไม่
ฉันมีสองไฟล์: file1 ที่มีประมาณ 10,000 บรรทัดและ file2 ที่มีไม่กี่ร้อยบรรทัด ฉันต้องการตรวจสอบว่าทุกบรรทัดของ file2 เกิดขึ้นใน file1 นั่นคือ: ∀ line ℓ∈ file2: ℓ∈ file1 หากใครไม่ทราบความหมายของสัญลักษณ์เหล่านี้หรือ "ตรวจสอบว่าทุกบรรทัดของ file2 เกิดขึ้นใน file1" หมายถึง: บรรทัดที่เทียบเท่าหลายบรรทัดในไฟล์ใดไฟล์หนึ่งไม่มีผลต่อการตรวจสอบที่ส่งคืนว่าไฟล์นั้นตรงตามข้อกำหนดหรือไม่ ฉันจะทำสิ่งนี้ได้อย่างไร

6
แบ่งไฟล์ออกเป็นสองส่วนในรูปแบบ
จะแบ่งไฟล์ขนาดใหญ่ออกเป็นสองส่วนได้อย่างไรในรูปแบบ รับตัวอย่างfile.txt: ABC EFG XYZ HIJ KNL ฉันต้องการที่จะแยกไฟล์นี้ที่XYZดังกล่าวว่าfile1มีเส้นขึ้นไปและส่วนที่เหลือของสายในXYZfile2

4
เอาต์พุตส่วนหนึ่งของแต่ละบรรทัดไปยังไฟล์แยกกัน
ฉันมีไฟล์เช่นนี้: a AGTACTTCCAGGAACGGTGCACTCTCC b ATGGATTTTTGGAGCAGGGAGATGGAATAGGAGCATGCTCCAT c ATATTAAATGGATTTTTGGAGCAGGGAGATGGAATAGGAGCATGCTCCATCCACTCCACAC d ATCAGTTTAATATCTGATACGTCCTCTATCCGAGGACAATATATTAAATGGA e TTTGGCTAAGATCAAGTGTAGTATCTGTTCTTATAAGTTTAATATCTGATATGTCCTCTATCTGA ฉันต้องการที่จะทำให้ไฟล์ที่มีลำดับa.seq AGTACTTCCAGGAACGGTGCACTCTCCในทำนองเดียวกันมีb.seq ATGGATTTTTGGAGCAGGGAGATGGAATAGGAGCATGCTCCATในระยะสั้น Column1 ควรใช้เป็นชื่อไฟล์เอาต์พุตที่มีนามสกุล.seqและจากนั้นควรมีลำดับ column2 ที่สอดคล้องกัน ฉันสามารถทำได้โดยการเขียนสคริปต์ Perl แต่สิ่งใดในบรรทัดคำสั่งจะเป็นประโยชน์ หวังว่าจะได้ยินในไม่ช้า

2
iconv ลำดับการป้อนข้อมูลที่ผิดกฎหมาย - เพราะอะไร
ขณะที่พยายามจะแปลงไฟล์ข้อความลงในเทียบเท่า ASCII iconv: illegal input sequence at positionของฉันได้รับข้อความข้อผิดพลาดที่ คำสั่งที่ฉันใช้คือ iconv -f UTF-8 -t ascii//TRANSLIT file æตัวละครที่กระทำผิดคือ แฟ้มข้อความที่ตัวเองมีอยู่ที่นี่ ทำไมพูดลำดับผิดกฎหมาย อักขระอินพุตเป็นอักขระ UTF-8 ที่เหมาะสม (U + 00E6)

2
หลามเทียบเท่าของ grep -v คืออะไร?
grep -vผมชอบ ฉันจะใช้มันตลอดเวลา. แต่ฉันกำลังทำการประมวลผลข้อความในหลามและมีสิ่งสำคัญอย่างหนึ่งที่ฉันขาด โดยปกติฉันใช้grep -vเพื่อลบสิ่งที่ไม่เกี่ยวข้องออกจากข้อความ ตัวอย่างเช่น $ grep -v '[a-z]' # (I manually review this output to confirm that I don't want those lines) $ grep '[a-z]' > linesiwanted แต่ฉันจะจับคู่ regex ใน Python ได้อย่างไร ตัวอย่างเช่นการเติมเต็มของ\w?

3
เป็นไปได้หรือไม่ที่จะวางซ้อน 'find -exec' ภายใน 'find -exec' อื่น?
สิ่งต่อไปนี้คือสิ่งที่ฉันเป็น แต่รหัสของฉันไม่ทำงานไม่ว่าฉันจะหลบหนี{}และ+ ; find ./ -maxdepth 1 -type d -name '.*' -exec \ find {} -maxdepth 1 -type f -name '*.ini' -exec \ md5sum \{\} \\; \; หลังจากเห็นคำถาม Unix - & - Linuxนี้ฉันพบว่าโค้ดต่อไปนี้ใช้งานได้ แต่ไม่พบการซ้อนกันและฉันสงสัยว่ามีวิธีที่ดีกว่าในการทำงานนี้โดยเฉพาะ find ./ -maxdepth 1 -type d -name '.*' \ -exec bash -c 'for x; do find …

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