ลบอักขระแรกที่รู้จักในสตริงด้วย sed


12

หนึ่งจะลบตัวอักษรแรกที่รู้จักในสตริงด้วย sed อย่างไร

ตัวอย่างเช่นสมมติว่าฉันต้องการลบอักขระตัวแรก (ซึ่งคือ @) ในสตริง "@ ABCDEFG1234"

ฉันต้องการให้คนอื่นยืนยันว่า "@" มีอยู่เป็นตัวอักษรตัวแรกหรือไม่ หากเป็นเช่นนั้นควรลบตัวอักขระ

คำตอบ:


10

sed 's/^@\(.*\)/\1/'

^ หมายถึงการเริ่มต้นของสตริง

@ ตัวละครที่คุณรู้จัก

(.*) ส่วนที่เหลือถูกจับ

บล็อกที่ถูกจับแล้วจะถูกแทนที่เพื่อแสดงผลขออภัยไม่สามารถทดสอบได้ในขณะนี้ แต่ควรเป็นเช่นนั้น


18

ไม่จำเป็นต้องจับภาพและแทนที่

sed 's/^@//'

สิ่งนี้จะแทนที่ตัวละคร@เมื่อตัวอักษรตัวแรก^ในสตริงไม่มีอะไร ดังนั้นการลบมัน


0

คุณสามารถทำสิ่งนี้แทน

sed 's /^.//'

^ - Starting character 
. - No of charactes(.. means two characters)

ตัวอย่าง:

echo test123 | sed 's/^.//'
est123
echo test123 | sed 's/^..//'
st123

1
คำถามบอกว่า“ ฉันต้องการให้ใจเย็น ๆ ยืนยันว่า "@" มีอยู่เป็นตัวอักษรตัวแรกหรือไม่ ถ้าเป็นเช่นนั้นก็ควรลบตัวอักษร” คำตอบของคุณลบอักขระตัวแรกของแต่ละบรรทัดไม่ว่าจะเป็นอะไรก็ตาม ตัวอย่างเช่นหากบรรทัดมีtest123ดูเหมือนว่า OP ต้องการให้อยู่คนเดียว
สก็อต
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.