ถ้า grep -A
ไม่ทำงานลอง
awk '/pattern/ {for(i=0;i<number_of_lines;i++){print;getline}}' <filename>
sed อื่นมีวิธีการแก้ปัญหาที่สกปรกอีก
sed -n '/pattern/ {p;n;p;n;p;...}' <filename>
ที่นี่ p- & gt; พิมพ์, n - & gt; ไปที่บรรทัดถัดไป ดังนั้น number of คือจำนวนบรรทัดที่จะพิมพ์
ปรับปรุง:
เพื่อใช้เป็นฟังก์ชั่นเขียนใน test.sh
jobcheck(){
awk "/$1/"' {for(i=0;i<10;i++){print;getline}}' $2
}
เพียงแค่นั้น
source test.sh
วิ่ง,
jobcheck "pattern" "file"
ปรับปรุง:
ตามคำแนะนำของ Jonathan Leffler หากหนึ่งใน 10 บรรทัดถัดไปมีรูปแบบการนับควรเริ่มจากบรรทัดนั้น
pattern ->start printing from here to next 10 lines
blah
blah
pattern ->forget about the last 2 lines, start counting from here
blah
blah
คำสั่ง awk ที่อัปเดตแล้วจะเป็นเช่นนั้น
awk '/pattern/{max_line=NR+2} {if(NR<=max_line) print}' <filename>
ภายใน Jobcheck ก็จะถูกเปลี่ยนเช่นกัน ไชโย :)