อักขระ # หมายถึงอะไรใน: / bin / sed -e '# abc # zzz # g'


คำตอบ:


14

มันเป็นตัวคั่นเช่นเดียวกับมันเช่นเดียวกับ"/"'s/abc/zzz/g'

มันหมายถึงการค้นหา "abc" แทนที่ด้วย "zzz" ด้วยค่าสถานะสากลหมายความว่าทำเพื่อค้นหา "abc" ทั้งหมดในบรรทัดไม่ใช่เฉพาะอันแรก

คุณยังสามารถใช้ตัวคั่นทางเลือกสำหรับที่อยู่ของรูปแบบได้ แต่ในกรณีนั้นคุณต้องหลีกเลี่ยงเพื่อให้การตีความถูกต้อง:

sed -r '\#abc#p'

24

มันเป็นตัวคั่นหรือตัวคั่น หนึ่งที่ใช้บ่อยที่สุดคือ/ใน

sed 's/old/new/' file

แต่ sed จะใช้อักขระตัวแรกหลังจากคำสั่งเป็นตัวคั่น คุณสามารถใช้ตัวละครที่สะดวกเช่น ...

sed 's%old%new%' file

สิ่งนี้มีประโยชน์มากหากไฟล์นั้นมี/(หรืออักขระอื่น ๆ ที่กำหนดแบบดั้งเดิม) คุณสามารถเลือกเป็นตัวคั่นบางตัวที่คุณรู้ว่าคุณไม่จำเป็นต้องใส่ในsedการแสดงออกช่วยให้คุณรอดพ้นจากการที่น่ารำคาญ

สมมติว่าคุณต้องการแทนที่

https://askubuntu.com/questions

กับ

https://askubuntu.com/posts

คุณสามารถใช้

sed 's/https:\/\/askubuntu.com\/questions/https:\/\/askubuntu.com\/posts/' file

แต่ดีกว่าที่จะใช้

sed 's|https://askubuntu.com/questions|https://askubuntu.com/posts|' file

อาจเป็นเรื่องที่น่าสังเกตว่าอย่างน้อยใน GNU sed /สามารถถูกแทนที่ด้วยอักขระสำรองในบริบทอื่นนอกเหนือจากsคำสั่ง (ทดแทน) - แต่ในกรณีนั้นจะต้องมีการหลบหนีในครั้งแรกเช่นsed '/foo/d'(ลบเส้นตรงfoo) กลายเป็นsed '\#foo#d'
steeldriver

@steeldriver แน่นอน! - ผมเห็นว่า Ravexina เสริมว่าคำตอบของเขาดังนั้นผมอาจจะออกจากเหมือง :)
Zanna

1
ไม่สำคัญว่าสตรีมจะมีตัวคั่นหรือไม่ สิ่งสำคัญคือว่าสตริงการค้นหาหรือสตริงการแทนที่มีอักขระตัวคั่น
kasperd

@kasperd โอ้ใช่จริง ฉันแก้ไขเล็กน้อย :)
Zanna

@ คำตอบของ Zanna มีความสำคัญมากกว่า: อักขระตัวแรกหลังจากคำสั่ง "s" จะกำหนดตัวคั่นที่ใช้ในคำสั่งนี้ คุณสามารถใช้อักขระใด ๆที่นี่ ไม่เช่นเดียวกับsbabeb s/a/e/
rexkogitans
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.