我有一个大文件,我想从连续的50行,第15行和第25行打印。
sed -n '15,25p' inputfile
如何修改此命令以仅打印第15和25行并在文件中的每50行上循环。
我有一个大文件,我想从连续的50行,第15行和第25行打印。
sed -n '15,25p' inputfile
如何修改此命令以仅打印第15和25行并在文件中的每50行上循环。
Answers:
使用awk的另一种方法是基于Sundeep的使用列表的思想:
awk 'BEGIN { a[15] a[25] }; NR % 50 in a'
a
根据要打印的行在阵列中设置键。打印NR % 50
与数组中的键之一匹配的行。
为了说明性能,我对这种方法进行了计时,并与其他答案进行了比较,平均user
花费了3次运行时间。
0.276秒
$ time awk 'BEGIN { a[15] a[25] }; NR % 50 in a' <(seq 1000000) > /dev/null
0.374秒
$ time awk 'NR % 50 == 15 || NR % 50 == 25' <(seq 1000000) > /dev/null
0.384秒
$ time perl -ne 'print if $.%50==15 || $.%50==25' <(seq 1000000) > /dev/null
0.542秒
$ time perl -ne 'print if grep {$_==$.%50} (15,25)' <(seq 1000000) > /dev/null