我知道如何使用awk和sed获得一系列行.
我也知道如何使用awk和sed打印出每一行.
我也知道如何使用awk和sed打印出每一行.
但是,我不知道如何将两者结合起来.
例如,我有一个1780000行的文件.
对于每17800行,我想打印第17800行以及之后的两行.
因此,如果我有一个1780000行的文件,它从1开始,结束于1780000,这将打印:
1 2 3 17800 17801 17802 35600 35601 35602 # ... and so on.
有没有人知道如何使用awk,sed或其他unix命令每隔n个间隔获取一行范围?
解决方法
使用GNU sed:
sed -n '0~17800{N;N;p}' input
含义,
For every 17800th line: 0~17800 Read two lines: {N;N; And print these out: p}
我们还可以添加前三行:
sed -n -e '1,3p' -e '0~17800{N;N;p}' input
使用Awk,这会更简单:
awk 'NR%17800<3 || NR==3 {print}' input