นี่คือsed
ทางออก:
$ echo ':29.06.2019 23:03:17' | sed 's/^://'
29.06.2019 23:03:17
สิ่งที่คำสั่งsed 's/^://'
จะทำคือใช้แทนs
ตัวอักษรลำไส้ใหญ่:
จากจุดเริ่มต้นของแต่ละบรรทัดกับสตริงที่ว่างเปล่า^
//
นี่คือawk
ทางออกที่ยุ่งยากซึ่งเราเปลี่ยนตัวคั่นฟิลด์เป็น^:
อธิบายข้างต้นและส่งออกฟิลด์ที่สอง (ของแต่ละบรรทัด):
$ echo ':29.06.2019 23:03:17' | awk -F'^:' '{print $2}'
29.06.2019 23:03:17
งานสามารถทำได้ด้วยgrep
( คำอธิบาย ) อาจเป็นวิธีแก้ปัญหาที่เร็วที่สุดสำหรับข้อมูลจำนวนมาก:
$ echo 'Logfile started :29.06.2019 23:03:17' | grep -Po '^Logfile started :\K.*'
29.06.2019 23:03:17
หรือประมวลผลไฟล์โดยตรงโดยใช้คำสั่งต่อไปนี้โดยที่ข้อ จำกัด^
ถูกลบออก:
grep -Po 'Logfile started :\K.*' process.log
ข้างต้นสามารถทำได้โดยการsed
จับกลุ่ม()->\1
:
sed -nr 's/^.*Logfile started :(.*)$/\1/p' process.log
ในกรณีที่การแสดงออกจะตรงกับสายทั้งที่มี^.*<something>.*$
<something>
คำสั่งs/old/new/
จะแทนที่บรรทัดนี้ด้วยเนื้อหาของกลุ่มการจับภาพแรก (การแสดงออกในวงเล็บอาจเป็นรูปธรรมมากขึ้น) ตัวเลือก-r
เปิดใช้งานการแสดงออกปกติเพิ่มเติม ตัวเลือก-n
จะระงับการส่งออกปกติsed
และสุดท้ายคำสั่งp
จะพิมพ์การแข่งขัน