【问题标题】:get content between line m and line n [duplicate]获取第 m 行和第 n 行之间的内容 [重复]
【发布时间】:2015-03-03 07:40:43
【问题描述】:

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

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

【问题讨论】:

标签: bash sed terminal


【解决方案1】:

42 到 96 之间的行:

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

【讨论】:

    【解决方案2】:

    您可以使用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

      打印当前模式空间。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        使用headtail

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-02-23
          • 2021-03-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-10-01
          相关资源
          最近更新 更多