获取第m行和第n行之间的内容[重复]

问题描述 投票:0回答:4

我有一个大文件,但我需要其中的一部分,即第

m
(1000) 行和第
n
(2000) 行之间的行。

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

bash sed terminal
4个回答
12
投票

42
96
之间的线:

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

6
投票

您可以轻松地使用

sed
:

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

假设 m 和 n 是数字

在这里,您正在使用:

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

  • -n
    选项

    -n,--安静,--沉默
    抑制图案空间的自动打印

  • p
    命令

    打印当前模式空间。


4
投票

如果文件很大,最好在到达end行后立即

退出
文件浏览。你可以使用这个awk:

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

1
投票

使用

head
tail

head -$start file.txt|tail -$(($end - $start))
© www.soinside.com 2019 - 2024. All rights reserved.