获取第m行和第n行之间的内容

时间:2015-01-05 17:56:36

标签: bash sed terminal

我有一个大文件,但我需要它的一部分,即行m(1000)和行n(2000)之间的行。

我怎样才能得到它? (并将其放入一个新的较小的文件,或在屏幕上打印)

4 个答案:

答案 0 :(得分:3)

您可以使用sed轻松完成:

sed -n 'm,n p' bigfile > smaller_file

假设m和n是数字

在这里,您正在使用:

  

可以在没有地址的情况下给出Sed命令,在这种情况下,将对所有输入行执行命令;使用一个地址,在这种情况下,只对与该地址匹配的输入行执行命令; 或两个地址,在这种情况下,将对所有输入行执行命令,该输入行与从第一个地址开始并继续到第二个地址的行的包含范围相匹配。有关地址范围的三点注意事项:语法是addr1,addr2(即地址用逗号分隔); addr1匹配的行将始终被接受,即使addr2选择了较早的行;如果addr2是正则表达式,则不会针对addr1匹配的行进行测试。

  • -n option

      

    -n, - quiet, - silent
      抑制模式空间的自动打印

  • p command

      

    打印当前图案空间。

答案 1 :(得分:2)

如果文件很大,一旦达到end行,最好退出文件浏览。你可以使用这个awk:

awk -v m=10 -v n=15 'NR>n{exit} NR>=m' file > file_chunk

答案 2 :(得分:1)

42到96之间的行:

sed -n '42,96p'  oldfile > newfile

答案 3 :(得分:0)

使用headtail

head -$start file.txt|tail -$(($end - $start))