Score:3

แทนที่ข้อความภายในเครื่องหมายคำพูดเดี่ยวด้วยสตริงอื่นโดยใช้ sed (เพียงการเกิดขึ้นครั้งแรกของ regex)

ธง ph

ฉันมีไฟล์ที่มีเนื้อหาดังต่อไปนี้:

ไฟล์ $ cat.txt
สร้างคอลเลชัน public.collation123 (ผู้ให้บริการ = libc, สถานที่ = 'fr-FR');  
สร้างคอลเลชัน public.collation_1 (ผู้ให้บริการ = libc, สถานที่ = 'bas');  
สร้างคอลเลชัน public.collation_test (ผู้ให้บริการ = libc, สถานที่ = 'fr-FR');   

ฉันต้องการแทนที่ เกิดขึ้นครั้งแรก ของ สถานที่ = 'fr-FR' กับ สถานที่ = 'fr_FR.utf8'.

หลังจากแทนที่ ไฟล์ควรมีเนื้อหาต่อไปนี้:

ไฟล์ $cat.txt
สร้างคอลเลชัน public.collation123 (ผู้ให้บริการ = libc, สถานที่ = 'fr_FR.utf8');  
สร้างคอลเลชัน public.collation_1 (ผู้ให้บริการ = libc, สถานที่ = 'bas');  
สร้างคอลเลชัน public.collation_test (ผู้ให้บริการ = libc, สถานที่ = 'fr-FR'); 
Score:4
ธง hr

ด้วย GNU sed คุณสามารถใช้แบบฟอร์มสองที่อยู่พิเศษได้ 0,/regexp/ เพื่อจำกัดคำสั่งการแทนที่ให้อยู่ในช่วงสูงสุดและรวมถึงอินสแตนซ์แรก:

ไฟล์ $cat.txt
สร้างคอลเลชัน public.collation123 (ผู้ให้บริการ = libc, สถานที่ = 'fr-FR');
สร้างคอลเลชัน public.collation_1 (ผู้ให้บริการ = libc, สถานที่ = 'bas');
สร้างคอลเลชัน public.collation_test (ผู้ให้บริการ = libc, สถานที่ = 'fr-FR');

$ sed "0,/'fr-FR'/s//'fr_FR.utf8'/" file.txt
สร้างคอลเลชัน public.collation123 (ผู้ให้บริการ = libc, สถานที่ = 'fr_FR.utf8');
สร้างคอลเลชัน public.collation_1 (ผู้ให้บริการ = libc, สถานที่ = 'bas');
สร้างคอลเลชัน public.collation_test (ผู้ให้บริการ = libc, สถานที่ = 'fr-FR');

รูปแบบว่างบน LHS ของ s/รูปแบบ/การแทนที่ ทำให้ใช้รูปแบบก่อนหน้าจากที่อยู่ซ้ำ

แน่นอน ถ้าคุณรู้ว่าคุณต้องการแค่แทนที่ในบรรทัดแรก คุณสามารถใช้วิธีที่ง่ายกว่าได้ "1s/'fr-FR'/'fr_FR.utf8'/"

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา