ฉันจะเพิ่มบรรทัดใหม่ระหว่างบรรทัดที่พิมพ์บนบรรทัดคำสั่งได้อย่างไร


30

บันทึกเมลอ่านยากอย่างไม่น่าเชื่อ ฉันจะส่งออกบรรทัดว่างระหว่างแต่ละบรรทัดที่พิมพ์บนบรรทัดคำสั่งได้อย่างไร ตัวอย่างเช่นฉันกำลังพิมพ์บันทึก ด้วยวิธีนี้หลายบรรทัดที่พันกันจะไม่สับสน

คำตอบ:


52
sed G 
# option: g G    Copy/append hold space to pattern space.

Gไม่ได้ใช้บ่อย แต่เหมาะสำหรับวัตถุประสงค์นี้ sedรักษาบัฟเฟอร์พื้นที่สอง: "pattern space" และ "hold space" สายประมวลผลโดยsedมักจะไหลผ่านพื้นที่รูปแบบเป็นคำสั่งต่างๆที่ดำเนินการเกี่ยวกับเนื้อหา ( s///, pฯลฯ ); พื้นที่พักเริ่มว่างเปล่าและถูกใช้โดยบางคำสั่งเท่านั้น

Gคำสั่งผนวก newline และเนื้อหาของพื้นที่ถือไปยังพื้นที่รูปแบบที่ โปรแกรมsedด้านบนไม่ได้วางอะไรไว้ในพื้นที่พักดังนั้นGจะเพิ่มบรรทัดใหม่ให้กับทุกบรรทัดที่ถูกประมวลผลอย่างมีประสิทธิภาพ


3
-e ไม่จำเป็น ท่อwhatever | sed Gควรทำเคล็ดลับ
frabjous

@frabjous: ใช่แล้วก็อาจละทิ้งไป-eเพราะเราต้องการอาร์กิวเมนต์คำสั่งเดียว
Chris Johnsen

ฉันจะให้ +2 เหมือนคุณได้ไหม เล็บมัน!
Christian Bongiorno

แต่มันจะแสดงเฉพาะใน stdout แต่ไม่บันทึก
biolinh

8

ใช้ awk เพื่อเพิ่มบรรทัดใหม่พิเศษ นอกจากนี้ยังช่วยให้คุณกรองสิ่งที่คุณไม่ต้องการ

awk '{print $0,"\n"}' | less

4

ใช้ sed และแทนที่ทั้งบรรทัดด้วยตัวเองบวกอักขระขึ้นบรรทัดใหม่หนึ่งตัว:

grep foo /var/log/maillog | sed -e "s/^.*$/&1\n/"

4
การทดแทน sed ที่ง่ายกว่าเล็กน้อยจะเป็น 's / $ / \ n /' แม้ว่าคำสั่ง 'G' ของ @Chris Johnsen จะง่ายกว่า
camh

3

นี่คือสิ่งที่คุณเป็นหรือไม่

grep SPAM mail.log | while read -r line; do echo; echo $line; done


คุณอาจต้องการใช้read -rเพื่อหลีกเลี่ยงการใช้อักขระเครื่องหมายทับขวาเป็นพิเศษ
Chris Johnsen

0

หากเป็นมากกว่าเพียงแค่ดูฉันชอบที่จะส่งพวกเขาไปยังไฟล์ข้อความและเปิดด้วยโปรแกรมแก้ไขข้อความเพื่อให้คุณสามารถตั้งค่าบรรทัดที่จะตัดหรือไม่และทำการค้นหาได้อย่างง่ายดาย ... และลบบรรทัดที่ไม่ต้องการและอื่น ๆ โดยไม่ต้อง ต้องพิมพ์คำสั่งจำนวนมาก

cat file.log > log.txt และgedit log.txtหรือเทอร์มินัลเอดิเตอร์เช่นนาโน

แก้ไข: หรือcp file.log log.txtแน่นอนว่าง่ายขึ้นและเร็วขึ้น ... ขอบคุณที่แสดงความคิดเห็น KeithB


1
ทำไมcatไม่cp?
KeithB

แน่นอนว่าcpจะง่ายขึ้นและเร็วขึ้น! ... lol - ฉันอ่านคำตอบอื่น ๆ ที่เกี่ยวข้องgrepและawkดังนั้นฉันจึงเขียนcatวิธี แต่ฉันแก้ไขนั้นขอบคุณ
laurent
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.