คำถามติดแท็ก sed

sed เป็นตัวแก้ไขสตรีมบรรทัดคำสั่งสำหรับการกรองและแปลงข้อความ

8
เปลี่ยนบรรทัดแยกเป็นรายการคั่นด้วยเครื่องหมายจุลภาคด้วยรายการที่ยกมา
ฉันมีข้อมูลต่อไปนี้ (รายการแพ็กเกจ R แยกวิเคราะห์จากไฟล์ Rmarkdown) ที่ฉันต้องการเปลี่ยนเป็นรายการที่ฉันสามารถส่งไปยัง R เพื่อติดตั้ง: d3heatmap data.table ggplot2 htmltools htmlwidgets metricsgraphics networkD3 plotly reshape2 scales stringr ฉันต้องการเปลี่ยนรายการเป็นรายการของแบบฟอร์ม: 'd3heatmap', 'data.table', 'ggplot2', 'htmltools', 'htmlwidgets', 'metricsgraphics', 'networkD3', 'plotly', 'reshape2', 'scales', 'stringr' ขณะนี้ฉันมีไพพ์ไลน์ที่ไปจากไฟล์ raw ไปยังรายการด้านบน: grep 'library(' Presentation.Rmd \ | grep -v '#' \ | cut -f2 -d\( \ | tr …
15 linux  sed  csv  tr 



4
วิธีการตรวจสอบจุดสิ้นสุดของบรรทัดด้วย sed
sedฉันกำลังมองหาวิธีการที่จะดำเนินการเพียงการเปลี่ยนเมื่อตัวละครสุดท้ายคือขึ้นบรรทัดใหม่โดยใช้ ตัวอย่างเช่น lettersAtEndOfLine ถูกแทนที่ แต่นี่ไม่ใช่: lettersWithCharacterAfter& เนื่องจากsedทำงานไม่ดีกับการขึ้นบรรทัดใหม่จึงไม่ง่ายเหมือน $ sed -E "s/[a-zA-Z]*\n/replace/" file.txt สิ่งนี้จะสำเร็จได้อย่างไร


5
ผสานสองไฟล์ทีละบรรทัดด้วยสัญลักษณ์สามท่อคั่น "|||"
|||ฉันมีสองไฟล์แบบคู่ขนานกับจำนวนเดียวกันของเส้นในสองภาษาและแผนการที่จะผสานเหล่านี้สายสองไฟล์โดยสอดคล้องกับตัวคั่น เช่นทั้งสองไฟล์มีดังนี้: ไฟล์ A: 1Mo 1,1 I love you. 1Mo 1,2 I like you. Hi 1,3 I am hungry. Hi 1,4 I am foolish. ไฟล์ B: 1Mo 1,1 Ich liebe dich. 1Mo 1,2 Ich mag dich. Hi 1,3 Ich habe Durst. Hi 1,4 Ich bin neu. ผลลัพธ์ที่คาดหวังเป็นดังนี้: 1Mo 1,1 I …

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
ลบบรรทัดที่ซ้ำกันในขณะที่รักษาลำดับของบรรทัด
[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 คำถาม : ฉันจะลบบรรทัดที่ซ้ำกันในขณะที่รักษาลำดับของบรรทัดได้อย่างไร ตัวพิมพ์เล็กก็สำคัญเช่นกัน: …

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กับเครื่องมืออื่นได้อย่างไร


5
sed แปลง 4 ช่องว่างเป็น 2
วิธีหนึ่งจะแปลง 4 ช่องว่างเป็น 2 ช่องว่างด้วยsed? เป็นไปได้ไหม? ฉันพบสิ่งนี้ แต่มันแปลงแท็บเป็นช่องว่าง: sed -r ':f; s|^(\t*)\s{4}|\1\t|g; t f' file
14 sed 

3
ฉันจะแนะนำ BSD sed ให้ตีความลำดับ escape เช่น \ n และ \ t ได้อย่างไร
ฉันมีคำสั่งทดแทน sed ว่าผมต้องการที่จะเข้ากันได้กับ BSD sedเช่นเดียวกับ sedGNU นิพจน์ทั่วไปที่ขยายเพิ่มไม่ใช่ปัญหาเนื่องจากฉันไม่ต้องการใช้ในกรณีนี้ ปัญหาหลักของฉันคือความแตกต่างในวิธีที่ทั้งสองsedตีความลำดับหนีอักขระในสตริงการแทนที่ สตริงแทนที่ผมจะมีแท็บและการขึ้นบรรทัดใหม่และฉันต้องการให้พวกเขาสามารถมองเห็นได้ในสตริงคำสั่งเพื่อความสะดวกในการบำรุงรักษา แต่ BSD sedไม่ตีความลำดับหนีและ GNU ไม่sed อะไรคือวิธีที่เหมาะสมในการแนะนำsedให้ตีความลำดับการหลบหนีเหล่านี้ใน BSD ตัวอย่างสองต่อไปนี้เป็นตัวอย่างที่ชัดเจนของปัญหาของฉัน: GNU sed echo ABC | sed 's/B/\n\tB\n' yeilds A B C BSD sed echo ABC | sed 's/B\n\tB\n' อัตราผลตอบแทน AntBnC เห็นได้ชัด\nและ\tไม่ถูกตีความว่าเป็นลำดับหนีภัยของ BSDsed ตอนนี้สำหรับคำถามของฉัน อ้างอิงจาก BSD sedmanpage: ในการระบุอักขระขึ้นบรรทัดใหม่ในสตริงการแทนที่ให้นำหน้าด้วยแบ็กสแลช นี้ไม่ได้บ่งบอกว่าผมจะต้องนำหน้าอักษรขึ้นบรรทัดใหม่โดยเครื่องหมาย? อะไรคือวิธีที่เหมาะสมในการแนะนำsedให้ตีความลำดับ escape เช่น\nในข้อความที่แทนที่
14 sed  bsd 

4
sed: ลบสตริงทั้งหมดที่เกิดขึ้นยกเว้นอันแรก
ฉันมีไฟล์บันทึกที่มีการประทับเวลาอยู่ในนั้น บางครั้งมีการประทับเวลาหลายครั้งในหนึ่งบรรทัด ตอนนี้ฉันต้องการลบการประทับเวลาทั้งหมดออกจากบรรทัด แต่เก็บครั้งแรก ฉันจะทำs/pattern//2แต่เพียงเอาเกิดขึ้นที่สองและไม่อนุญาตให้มีสิ่งที่ต้องการseds/pattern//2- ข้อเสนอแนะใด ๆ
14 sed 

3
ฉันสามารถใช้ `sed` เพื่อแปลอักขระเช่นเดียวกับ` tr 'ได้หรือไม่
ฉันต้องการแทนที่ชุดอักขระด้วยอักขระที่เกี่ยวข้องจากอีกชุดหนึ่งดังนี้: original set: ots "target" set: u.x foobartest → fuubar.ex. การแปล / การทับศัพท์เช่นนี้เป็นtrคำสั่งพิเศษ: $ echo 'foobartest' | tr 'ots' 'u.x' fuubar.ex. น่าเสียดายที่trไม่รองรับการเปลี่ยนไฟล์แบบsedเดิม ฉันต้องการที่จะใช้sedดังนั้นฉันไม่จำเป็นต้องบูรณาการล้อของไฟล์ชั่วคราวสำหรับเล่นปาหี่
14 sed  tr 

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