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

Sed (Stream EDitor) เป็นเครื่องมือแก้ไขบรรทัดคำสั่งสำหรับสภาพแวดล้อม POSIX Sed ประมวลผลไฟล์อย่างน้อยหนึ่งไฟล์ตามสคริปต์แก้ไขและเขียนผลลัพธ์ไปยังเอาต์พุตมาตรฐาน สร้างขึ้นที่ Bell Labs มาตั้งแต่กลางทศวรรษที่ 70

17
จะแทรกขึ้นบรรทัดใหม่ด้านหน้ารูปแบบได้อย่างไร?
จะแทรกขึ้นบรรทัดใหม่ก่อนรูปแบบภายในบรรทัดได้อย่างไร? ตัวอย่างเช่นสิ่งนี้จะแทรกขึ้นบรรทัดใหม่ด้านหลังรูปแบบนิพจน์ทั่วไป sed 's/regex/&\n/g' ทำเหมือนกัน แต่หน้าลายได้ยังไง? ด้วยไฟล์อินพุตตัวอย่างนี้รูปแบบที่จะจับคู่คือหมายเลขโทรศัพท์ some text (012)345-6789 ควรจะกลายเป็น some text (012)345-6789
139 shell  sed 

12
วิธีใช้ sed / grep เพื่อแยกข้อความระหว่างสองคำ?
ฉันกำลังพยายามส่งออกสตริงที่มีทุกอย่างระหว่างสองคำของสตริง: การป้อนข้อมูล: "Here is a String" เอาท์พุท: "is a" โดยใช้: sed -n '/Here/,/String/p' มีจุดสิ้นสุด แต่ฉันไม่ต้องการรวมไว้
134 string  bash  sed  grep 

5
sed: พิมพ์เฉพาะกลุ่มที่ตรงกัน
ฉันต้องการจับตัวเลขสองตัวสุดท้าย (หนึ่ง int, หนึ่ง float; ตามด้วยช่องว่างที่เลือกได้) และพิมพ์เฉพาะตัวเลขนั้น ตัวอย่าง: foo bar <foo> bla 1 2 3.4 ควรพิมพ์: 2 3.4 จนถึงตอนนี้ฉันมีสิ่งต่อไปนี้: sed -n 's/\([0-9][0-9]*[\ \t][0-9.]*[\ \t]*$\)/replacement/p' จะให้ฉัน foo bar <foo> bla 1 replacement อย่างไรก็ตามหากฉันพยายามแทนที่ด้วยกลุ่ม 1 จะมีการพิมพ์ทั้งบรรทัด sed -n 's/\([0-9][0-9]*[\ \t][0-9.]*[\ \t]*$\)/\1/p' ฉันจะพิมพ์เฉพาะส่วนของบรรทัดที่ตรงกับนิพจน์ทั่วไปในกลุ่มได้อย่างไร
133 regex  sed 

6
จะแทนที่ทั้งบรรทัดด้วย sed ได้อย่างไร?
สมมติว่าฉันมีไฟล์ที่มีเส้น AAA = BBB ตอนนี้ฉันต้องการแทนที่ด้วย: AAA = xxx ฉันสามารถทำได้ดังนี้: sed "s / aaa = bbb / aaa = xxx / g" ตอนนี้ฉันมีไฟล์ที่มีสองสามบรรทัดดังนี้: AAA = BBB AAA = CCC AAA = ววว aaa = [อย่างอื่น] ฉันจะแทนที่บรรทัดทั้งหมดนี้aaa=[something]ด้วยการaaa=xxxใช้sed ได้อย่างไร
132 regex  sed 

8
sed one-liner เพื่อแปลงตัวพิมพ์ใหญ่ทั้งหมดเป็นตัวพิมพ์เล็ก?
ฉันมีไฟล์ข้อความที่มีบางคำพิมพ์เป็นตัวพิมพ์ใหญ่ทั้งหมด ฉันต้องการเพียงแค่แปลงทุกอย่างในไฟล์ข้อความเป็นตัวพิมพ์เล็กโดยใช้sed. นั่นหมายความว่าประโยคแรกจะอ่านว่า 'ฉันมีไฟล์ข้อความที่มีบางคำพิมพ์ด้วยตัวพิมพ์ใหญ่ทั้งหมด'
131 regex  sed 

11
ฉันจะตัดอักขระ X ตัวแรกออกจากสตริงโดยใช้ sed ได้อย่างไร
ฉันกำลังเขียนเชลล์สคริปต์สำหรับลินุกซ์แบบฝังในกล่องอุตสาหกรรมขนาดเล็ก ฉันมีตัวแปรที่มีข้อความpid: 1234และฉันต้องการตัดอักขระ X ตัวแรกออกจากบรรทัดดังนั้นจะมีเพียง 1234 ตัวเท่านั้น ฉันมีตัวแปรเพิ่มเติมที่ต้อง "ล้าง" ดังนั้นฉันจึงต้องตัด X อักขระแรกออกไปและใช้${string:5}ไม่ได้ด้วยเหตุผลบางประการในระบบของฉัน sedสิ่งเดียวที่กล่องดูเหมือนว่าจะมีคือ ฉันพยายามทำให้สิ่งต่อไปนี้ใช้งานได้: result=$(echo "$pid" | sed 's/^.\{4\}//g') ความคิดใด ๆ ?
126 bash  shell  sed 

9
วิธีเลือกเส้นระหว่างรูปแบบเครื่องหมายสองรูปแบบซึ่งอาจเกิดขึ้นหลายครั้งด้วย awk / sed
ใช้awkหรือsedฉันจะเลือกเส้นที่เกิดขึ้นระหว่างรูปแบบเครื่องหมายสองแบบที่แตกต่างกันได้อย่างไร อาจมีหลายส่วนที่ทำเครื่องหมายด้วยรูปแบบเหล่านี้ ตัวอย่างเช่นสมมติว่าไฟล์มี: abc def1 ghi1 jkl1 mno abc def2 ghi2 jkl2 mno pqr stu และรูปแบบเริ่มต้นคือabcและรูปแบบสิ้นสุดคือmno ดังนั้นฉันต้องการผลลัพธ์เป็น: def1 ghi1 jkl1 def2 ghi2 jkl2 ฉันใช้ sed เพื่อจับคู่รูปแบบครั้งเดียว: sed -e '1,/abc/d' -e '/mno/,$d' <FILE> มีวิธีใดsedหรือawk ต้องทำซ้ำ ๆ จนจบไฟล์?

6
ค้นหาทั้งคำและแทนที่
ฉันจะค้นหาและแทนที่ทั้งคำโดยใช้ sed ได้อย่างไร การทำ sed -i 's/[oldtext]/[newtext]/g' <file> จะแทนที่การจับคู่บางส่วน[oldtext]ที่ฉันไม่ต้องการให้ทำ
120 shell  sed 


19
ฉันจะลบบรรทัดใหม่ออกจากไฟล์ข้อความได้อย่างไร
ฉันมีข้อมูลต่อไปนี้และจำเป็นต้องรวมข้อมูลทั้งหมดไว้ในบรรทัดเดียว ฉันมีสิ่งนี้: 22791 ; 14336 ; 22821 ; 34653 ; 21491 ; 25522 ; 33238 ; ฉันต้องการนี้: 22791;14336;22821;34653;21491;25522;33238; แก้ไข ไม่มีคำสั่งใดทำงานได้อย่างสมบูรณ์ ส่วนใหญ่ให้ข้อมูลมีลักษณะดังนี้ 22791 ;14336 ;22821 ;34653 ;21491 ;25522
116 linux  bash  scripting  shell  sed 

10
จะลบช่องว่างต่อท้ายด้วย sed ได้อย่างไร?
ฉันมีเชลล์สคริปต์ง่ายๆที่ลบช่องว่างต่อท้ายออกจากไฟล์ มีวิธีใดบ้างที่จะทำให้สคริปต์นี้กะทัดรัดมากขึ้น (โดยไม่ต้องสร้างไฟล์ชั่วคราว) sed 's/[ \t]*$//' $1 > $1__.tmp cat $1__.tmp > $1 rm $1__.tmp
113 sed  whitespace 


5
รักษาการสิ้นสุดบรรทัด
ฉันเรียกใช้ sed เพื่อทำการแทนที่บน windows และฉันสังเกตเห็นว่ามันจะแปลงส่วนท้ายบรรทัดเป็น Unix (\ n) โดยอัตโนมัติ มีตัวเลือกที่จะบอกให้ sed ใช้การสิ้นสุดบรรทัดของ Windows (\ r \ n) หรือดีกว่าเพื่อรักษาส่วนท้ายบรรทัดจากไฟล์หรือไม่ หมายเหตุ: ฉันใช้ sed จาก unxutils: http://unxutils.sourceforge.net/
111 windows  sed 


16
การพิมพ์ทุกอย่างยกเว้นฟิลด์แรกด้วย awk
ฉันมีไฟล์ที่มีลักษณะดังนี้: AE United Arab Emirates AG Antigua & Barbuda AN Netherlands Antilles AS American Samoa BA Bosnia and Herzegovina BF Burkina Faso BN Brunei Darussalam และฉันต้องการที่จะกลับคำสั่งพิมพ์ทุกอย่างก่อนยกเว้น $ 1 แล้ว $ 1: United Arab Emirates AE ฉันจะทำเคล็ดลับ "ทุกอย่างยกเว้นช่อง 1" ได้อย่างไร
108 perl  awk  sed 

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