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

3
แทนที่สตริงจำนวนมากในการส่งผ่านครั้งเดียว
ฉันกำลังมองหาวิธีที่จะแทนที่สตริงตัวยึดตำแหน่งในไฟล์แม่แบบด้วยค่าที่เป็นรูปธรรมด้วยเครื่องมือ Unix ทั่วไป (ทุบตี, sed, awk, อาจ perl) เป็นสิ่งสำคัญที่การเปลี่ยนจะดำเนินการในรอบเดียวนั่นคือสิ่งที่สแกน / เปลี่ยนแล้วจะต้องไม่ถูกนำมาพิจารณาสำหรับการเปลี่ยนใหม่ ตัวอย่างเช่นความพยายามสองครั้งนี้ล้มเหลว: echo "AB" | awk '{gsub("A","B");gsub("B","A");print}' >> AA echo "AB" | sed 's/A/B/g;s/B/A/g' >> AA ผลลัพธ์ที่ถูกต้องในกรณีนี้คือหลักสูตร BA โดยทั่วไปการแก้ปัญหาควรเทียบเท่ากับการสแกนอินพุตจากซ้ายไปขวาสำหรับการจับคู่ที่ยาวที่สุดไปยังสตริงการแทนที่ที่กำหนดอย่างใดอย่างหนึ่งและสำหรับการแข่งขันแต่ละครั้งทำการแทนที่และดำเนินการต่อจากจุดนั้นบนอินพุต (ไม่มี อ่านอินพุตแล้วหรือการแทนที่ที่ดำเนินการควรพิจารณาให้ตรงกัน) ที่จริงแล้วรายละเอียดไม่สำคัญเพียงแค่ว่าผลของการเปลี่ยนจะไม่ถูกนำมาพิจารณาสำหรับการทดแทนอื่นทั้งหมดหรือบางส่วน หมายเหตุฉันกำลังมองหาโซลูชันทั่วไปที่ถูกต้องเท่านั้น โปรดอย่าเสนอวิธีแก้ปัญหาที่ล้มเหลวสำหรับอินพุตบางอย่าง (ไฟล์อินพุต, ค้นหาและแทนที่คู่) แต่ไม่น่าจะเป็นไปได้
11 bash  sed  awk  string  replace 

2
ค้นหากรณีและรักษาเป็นกลุ่มในการรักษา?
ในvimฉันรู้ว่าฉันสามารถค้นหาโดยใช้ความไวตัวพิมพ์เล็กและใหญ่ แต่ถ้าฉันต้องการค้นหาสตริงในตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กและแทนที่ด้วยการแทนที่ตัวพิมพ์เดียวกันนั้นเป็นไปได้:s///หรือไม่? ตัวอย่างเช่นฉันต้องการเปลี่ยนบรรทัดเหล่านี้: short Short SHORT ถึง long Long LONG ฉันสามารถทำได้ในสาม:sคำสั่งหรือหนึ่งตาย:sและไปแก้ไขกรณีด้วยตนเอง แต่จะมีวิธีที่ดีกว่า การค้นหาและแทนที่กรณีเล็ก ๆ น้อย ๆ ?

5
Sed: แทนที่รูปแบบในการขึ้นบรรทัดใหม่ทุกวินาทีหรือไม่
มีวิธีบอกsedให้เปลี่ยนลวดลายในทุก ๆ วินาทีหรือไม่? หรืออย่างน้อยในทุก ๆ วินาที? (แน่นอนว่าเป็นไปได้ด้วยสคริปต์ แต่ฉันถามตัวเองว่าsedสามารถทำได้หรือไม่) แก้ไข ฉันพบ sed -e "s/pattern/replacement/g;n" แต่มันถูกแทนที่ทุกครั้งที่เกิดขึ้นไม่ใช่ครั้งที่สอง ตัวอย่าง ไฟล์อินพุต: I have a pattern in each line Also the second line has the pattern Another pattern here And -- you guess it -- a pattern ผลลัพธ์ที่ต้องการ: I have a pattern in each line Also …
10 sed  replace 

2
ลบอักขระยูนิโค้ดที่ไม่รู้จักออกจาก textfiles - sed วิธีทุบตี / bash อื่น ๆ
ฉันต้องการค้นหาและแทนที่อักขระที่ไม่รู้จักทั้งหมดในบางไฟล์ที่มีชื่อเหมือนกัน เมื่อเปิดไฟล์ดังกล่าวด้วย vi ฉันอ่านรหัส <91> สำหรับตัวละครนั้น เมื่อเปิดมันด้วยนาโนฉันอ่าน "เครื่องหมายคำถาม" ในรูปเพชร (สีดำสลัว) ฉันต้องการแทนที่ตัวละครที่ไม่รู้จักด้วยเครื่องหมายคำพูด (') ฉันพยายามหลายวิธีโดยไม่มีโชค ฉันเหนื่อย: find ./ -name filename.txt -exec perl -i~ -pe "s/\x91/'/" {} \; find ./ -name filename.txt -exec sed -i "s/\x91/'/g" {} \; แก้ไข ข้อมูลเพิ่มเติมเกี่ยวกับตัวละคร: Hexadecimal: 91 68 74 74 Decimal: 145 104 116 116 Octal: 221 150 …

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