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

12
เป็นกลุ่ม - ฉันจะทำ 'เปลี่ยนคำ' โดยใช้บัฟเฟอร์การวางปัจจุบันได้อย่างไร
ฉันมีข้อความในบัฟเฟอร์การวางของฉันเช่นฉันทำyw(คำว่างัด) และตอนนี้ฉันมี 'foo' ในบัฟเฟอร์ของฉัน ตอนนี้ฉันไปที่คำว่า 'บาร์' และฉันต้องการแทนที่ด้วยบัฟเฟอร์การวางของฉัน หากต้องการแทนที่ข้อความด้วยตนเองฉันสามารถทำได้cwแล้วพิมพ์คำใหม่ ฉันจะ 'เปลี่ยนคำ' แต่ใช้เนื้อหาของบัฟเฟอร์การวางของฉันแทนการพิมพ์คำที่แทนที่ด้วยตนเองได้อย่างไร ตัวเลือกที่ดีที่สุดที่ฉันมีตอนนี้คือไปที่จุดเริ่มต้นของคำที่ฉันต้องการแทนที่และทำdw(ลบคำ) จากนั้นไปที่อื่นและทำyw(คำพูดงัด) จากนั้นกลับไปที่พื้นที่ทดแทนและทำp(วาง) ซึ่งค่อนข้างงุ่มง่ามโดยเฉพาะอย่างยิ่งหากพวกเขาไม่ได้อยู่บนหน้าจอเดียวกัน
86 vim  vi  replace  buffer 

5
ลบบรรทัดที่มีสตริงที่แน่นอนและบรรทัดต่อไปนี้
ฉันใช้สิ่งนี้ cat foo.txt | sed '/bar/d' เพื่อลบบรรทัดที่มีสตริงbarในไฟล์ ฉันต้องการ แต่จะลบเส้นที่และสายโดยตรงหลังจากที่มัน โดยเฉพาะอย่างยิ่งในsed, awkหรือเครื่องมืออื่น ๆ ที่มีอยู่ใน MinGW32 มันเป็นสิ่งที่ตรงกันข้ามกับสิ่งที่ฉันสามารถเข้าgrepกับ-Aและ-Bพิมพ์บรรทัดที่ตรงกันรวมถึงบรรทัดก่อน / หลังบรรทัดที่ตรงกัน มีวิธีง่าย ๆ เพื่อให้บรรลุหรือไม่

3
วิธีแทรกข้อความหลังสตริงที่ต้องการในไฟล์ได้อย่างไร?
ตอนนี้ฉันกำลังใช้echo "Hello World" >> file.txtต่อท้ายข้อความในไฟล์ แต่ฉันต้องเพิ่มข้อความด้านล่างสตริงที่แน่นอนสมมติว่า "[ตัวเลือก]" มันเป็นไปได้ด้วยsedหรือไม่ เช่น: ใส่ไฟล์ Some text Random [option] Some stuff ไฟล์ที่ส่งออก Some text Random [option] *inserted text* Some stuff

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

3
แทนที่ด้วย VIM นำส่วนการค้นหารูปแบบกลับมาใช้ใหม่
ฉันกำลังทำงานกับVImและพยายามตั้งค่าการค้นหาและแทนที่คำสั่งเพื่อทำการทดแทนบางอย่างซึ่งฉันสามารถใช้นิพจน์ปกติที่เป็นส่วนหนึ่งของสตริงการค้นหาของฉันได้อีกครั้ง ตัวอย่างง่ายๆจะเป็นบรรทัดที่ฉันต้องการที่จะเปลี่ยน(10)ไป{10}ที่ 10 สามารถเป็นตัวเลขใด ๆ ฉันมาไกลขนาดนี้ .s/([0-9]*)/what here??/ ซึ่งตรงกับส่วนที่ฉันต้องการ ตอนนี้ฉันพยายามแทน .s/([0-9]*)/{\0}/ แต่นี่ให้เป็นผลลัพธ์ {(10)} จากนั้นฉันก็ลอง .s/(\zs[0-9]*\ze)/{\0}/ อย่างไรก็ตามนั่นทำให้ฉัน({10})ซึ่งฉันก็ปิด แต่ไม่ใช่สิ่งที่ฉันต้องการ ฉันคิดว่าฉันต้องการการทำเครื่องหมาย / การอ้างอิงกลับแบบอื่นแทนการทำสิ่งนี้\0แต่ฉันไม่รู้ว่าจะต้องดูที่ไหน ดังนั้นคำถามคือสิ่งนี้สามารถทำได้เป็นกลุ่มและถ้าเป็นเช่นนั้นได้อย่างไร

12
ฉันจะ "แมว" ไฟล์และลบบรรทัดที่มีความคิดเห็นได้อย่างไร
ฉันต้องการทราบว่ามีวิธีที่ฉันสามารถcatยื่นphp.iniและลบบรรทัดทั้งหมดที่ขึ้นต้นด้วย; ตัวอย่างเช่นหากไฟล์มีสิ่งนี้: ; - Show all errors, except for notices ; ;error_reporting = E_ALL & ~E_NOTICE ; ; - Show only errors ; ;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR ; ; - Show all errors except for notices ; error_reporting = E_ALL & ~E_NOTICE และฉันรันคำสั่งที่ถูกต้องcat | {remove comments command}จากนั้นฉันก็จะจบลงด้วย: error_reporting = E_ALL & …

7
วิธีการแทนที่คำปัจจุบันภายใต้เคอร์เซอร์ใน Emacs
ฉันจะแทนที่คำปัจจุบันภายใต้เคอร์เซอร์ใน Emacs ได้อย่างไร ฉันรู้ว่าฉันสามารถใช้ query-replace หรือ replace-string ได้ แต่ทุกครั้งที่ทำเช่นนั้นฉันต้องพิมพ์สตริงทั้งหมดเพื่อแทนที่นี่เป็นเรื่องน่ารำคาญ Vi มี cword คำสั่งที่เทียบเท่าและฉันสามารถใช้ทางลัดเพื่อดึงคำใต้เคอร์เซอร์แทน: nmap <leader>z :%s#\<<C-r>=expand("<cword>")<CR>\># ใครรู้วิธีการทำกับ Emacs?
25 emacs  search  replace 

3
แทนที่ข้อความอย่างรวดเร็วในไฟล์ที่มีขนาดใหญ่มาก
ฉันมีไฟล์ข้อความ 25GB ที่ต้องการสตริงแทนที่ในไม่กี่บรรทัด ฉันสามารถใช้งานได้sedสำเร็จ แต่ใช้เวลาในการรันนานมาก sed -i 's|old text|new text|g' gigantic_file.sql มีวิธีที่เร็วกว่าในการทำเช่นนี้?

5
วิธีรายงานการเปลี่ยนแปลงแบบ "sed" ในสถานที่
เมื่อใช้sedเพื่อแทนที่สตริงในสถานที่มีวิธีที่จะรายงานการเปลี่ยนแปลงที่เกิดขึ้น (โดยไม่ต้องอาศัยความแตกต่างของไฟล์เก่าและใหม่)? ตัวอย่างเช่นฉันจะเปลี่ยนบรรทัดคำสั่งได้อย่างไร find . -type f | xargs sed -i 's/abc/def/g' ดังนั้นฉันสามารถเห็นการเปลี่ยนแปลงที่เกิดขึ้นทันที?

3
แทนที่สตริงด้วยเนื้อหาของไฟล์โดยใช้ sed
ฉันมีสองไฟล์ที่แตกต่างกัน: file1 /home/user1/ /home/user2/bin /home/user1/a/b/c file2 <TEXT1> <TEXT2> ฉันต้องการที่จะเข้ามาแทนที่<TEXT1>ของFile2กับเนื้อหาของFile1sedใช้ ฉันลองคำสั่งนี้ แต่ไม่ได้ผลลัพธ์ที่เหมาะสม: cat File2|sed "s/<TEXT1>/$(cat File1|sed 's/\//\\\//g'|sed 's/$/\\n/g'|tr -d "\n")/g" คุณสามารถใช้เครื่องมืออื่นเพื่อแก้ไขปัญหานี้ได้เช่นกัน
23 sed  replace 

1
ใช้ sed กับเครื่องหมาย & (&)
ฉันใช้ sed เพื่อค้นหาและแทนที่รูปแบบภายในไฟล์ SAS ที่ฉันมีแทนที่จะเปลี่ยนทีละรายการ ปัญหาคือฉันพยายามแทนที่ตัวแปรมาโครและเมื่อฉันใช้เครื่องหมายและมันไม่ได้ประมวลผลอย่างถูกต้อง Here's my code: sed -ie 's/user=&uid./user=&sysuserid./g' *_table_*.sas เมื่อใดก็ตามที่ฉันเรียกใช้คำสั่งนี้ดูเหมือนว่าจะผนวกและทำสิ่งที่ขี้ขลาดทุกชนิดด้วยข้อความต้นฉบับ คำถาม: ฉันจะแทนที่ข้อความที่มีเครื่องหมายภายในด้วยคำสั่ง sed ได้อย่างไร
19 sed  quoting  replace 

4
Vim: s แทนที่ N <g แรกที่เกิดขึ้นในบรรทัด
ในกลุ่มบางครั้งผมมีโอกาสที่จะเปลี่ยนที่เกิดขึ้นไม่กี่แรกของการแข่งขันบนเส้น แต่ไม่เหมือนทุกgหากว่า เช่น: a a a a a ถึง b b b a a ฉันรู้ว่าฉันสามารถใช้งาน:s/a/b/[enter]:[up][enter]:[up][enter]ได้ แต่มันน่าเบื่อพอสำหรับการทำซ้ำสามครั้งฉันมีบรรทัดที่มีการแทนที่มากกว่า 10 รายการ ฉันพยายามแล้ว: :s/a/b/3g: เป็นกลุ่มบ่นของตัวอักษรต่อท้าย :s/a/b/3: เปลี่ยนการเกิดขึ้นครั้งแรกในสิ่งนี้และสองบรรทัดต่อไปนี้ 3:s/a/b: เหมือนก่อนหน้านี้ :s/a/b/g3: เปลี่ยนสิ่งที่เกิดขึ้นทั้งหมดนี้และสองบรรทัดถัดไป :3s/a/b: เปลี่ยนการเกิดขึ้นครั้งแรกในบรรทัดที่ 3 :/a/,3/a/s/a/b: การเปลี่ยนแปลงที่เกิดขึ้นครั้งแรกในแต่ละบรรทัดระหว่างบรรทัดถัดไปaและบรรทัดที่สามที่มีaอยู่ในไฟล์ (พร้อมท์ให้ย้อนกลับหากจำเป็น) :/a/,/\([^a]*a\)\{3\}/s/a/b/: เปลี่ยนเหตุการณ์ที่เกิดขึ้นครั้งแรกในแต่ละบรรทัดระหว่างสิ่งนี้และสิ่งต่อไปด้วย 3 aวินาทีบนสิ่งนั้น และรูปแบบการกำหนดแอดเดรสอื่น ๆ ที่หลากหลายซึ่งไม่ได้ผล ฉันต้องบอกว่าฉันได้เรียนรู้จำนวนพอสมควรเกี่ยวกับ:sคำสั่งที่พยายามค้นหาคำตอบสำหรับปัญหานี้ แต่ฉันยังไม่ได้แก้ไข ใครรู้วิธีการทำเช่นนี้? (คะแนนโบนัสสำหรับช่วงที่เฉพาะเจาะจงเช่นที่สองถึงเหตุการณ์ที่สี่)
13 vim  search  replace 

4
ฉันจะแทนที่ข้อความหลังจากคำใดคำหนึ่งโดยใช้ sed ได้อย่างไร
.ignoreฉันมีไฟล์ชื่อ projdirในความต้องการที่จะเปลี่ยน ตัวอย่างเช่น: ignore \..* ignore README projdir Snake ฉันต้องการแทนที่ Snake ด้วยเช่น "PacMan" ฉันอ่าน man page แต่ฉันไม่รู้จะทำอย่างไร


2
เร็วที่สุด & วิธีที่สำคัญที่สุดในการแทนที่“ \ r \ n” ด้วย“ \ n” ในไฟล์?
ฉันคิดว่าtrเป็นวิธีหลักมากกว่าและอาจเป็นวิธีที่เร็วกว่าในการแทนที่สิ่งต่าง ๆ ในไฟล์ที่กำหนด อย่างไรก็ตาม tr สามารถแทนที่อักขระในจำนวนเท่ากันเท่านั้น ความหมาย ... 2 ตัวอักษรสามารถถูกแทนที่ด้วย 2 ตัวอักษรซึ่งหมายถึงการแทนที่ \r\nด้วยไม่\nอยู่คำถามtr ตัวเลือกที่ดีที่สุดต่อไปsedคืออะไร? เป็นวิธีที่สำคัญที่สุดและเร็วที่สุดในการแทนที่\r\nด้วย\nไฟล์เนื่องจากขาดความสามารถใน TR ต้องการตัวอย่างถ้าเป็นไปได้
11 sed  replace  tr 

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