ดูเหมือนว่าคุณจะมีไฟล์กำหนดค่า สิ่งที่คุณสามารถทำได้คล้ายกับสิ่งที่ 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
มันจะไม่ทำงาน