ดูเหมือนว่าคุณจะมีไฟล์กำหนดค่า สิ่งที่คุณสามารถทำได้คล้ายกับสิ่งที่ Adam Siemeon / slm แนะนำ:
sed -nr 's/[^=]+=\s*(.+)$/\1/p' filename
ที่[^=]ไม่รวมทั้งหมด = 'ตัวอักษร+กล่าวว่าหนึ่งหรือมากกว่าของชนิดเดียวกันของตัวละครนี้ตามที่เกิดขึ้นจริง=, \sช่องว่างใด ๆ (รวมทั้งแท็บ\tและสายใหม่\n, \r\nและช่องว่างธรรมดา '' ในขณะที่*วิธีการศูนย์หรือมากกว่าของชนิดเดียวกัน วงเล็บจับสิ่งที่อยู่ภายในเพื่อวางลำดับอักขระที่ตรงกันใน \ 1, \ 2, ... , \ n ตัวยึดตำแหน่งแทนที่$หมายถึงจุดสิ้นสุดของบรรทัดซึ่งตามรูปแบบการแทนที่โดยทั่วไปของ: s/.../.../modifiers. ตัวเลือกบรรทัดคำสั่ง-rย่อมาจาก ไวยากรณ์ regex เพิ่มเติม (เป็นเรื่องของความสะดวกสบาย) และ-nหมายถึงไม่มีอะไรออกจนกว่าหรือเว้นแต่ร้องขอ explcitly โมดิฟายเออร์pพิมพ์ผลลัพธ์
คุณสามารถทำการค้นหาทั่วโลกด้วยการgปรับเช่น:
sed -nr 's/[^=]+=\s*(.+)$/\1 /pg' filename # note the space after \1
เพื่อที่คุณจะได้รับสตริงคั่นด้วย' '(อาจจะ\n, \tหรือสิ่งที่มีคุณ) ซึ่งคุณสามารถดำเนินการได้อย่างง่ายดาย
ทั้งสองถูกต้องหากค่าของคุณนำหน้าด้วยอักขระสมการขยายไปจนถึงจุดสิ้นสุดของบรรทัดและไม่ได้ตามมาด้วยความคิดเห็นหรืออักขระอื่น ๆ ที่มีความหมายเบี่ยงเบนจาก "ค่า" อย่างง่าย
แก้ไข:
ฉันไม่สามารถแสดงความคิดเห็นได้ที่นี่ในโพสต์ของคนอื่น เมื่อต้องการระบุบรรทัดให้ส่งผ่านหมายเลขบรรทัดในกรณีที่ 3 ของคุณก่อนsหรือก่อนหน้าอักขระอัญประกาศเริ่มต้น (เหมือนกับในกลุ่ม)
sed -nr '3s/[^=]+=\s*(.+)$/\1/p' filename
info sedโปรดดูที่ ตัวอย่างเช่น 3.2 และ 4.7 เป็นที่สนใจของคุณโดยเฉพาะ
awkคำสั่งเป็นสิ่งที่ดี -=แต่ถ้าคุณได้มีพื้นที่รอบPOP3_SERVER_NAME=localhostมันจะไม่ทำงาน