我有一个大文件,但我需要它的一部分,即行m
(1000)和行n
(2000)之间的行。
我怎样才能得到它? (并将其放入一个新的较小的文件,或在屏幕上打印)
答案 0 :(得分:3)
您可以使用sed
轻松完成:
sed -n 'm,n p' bigfile > smaller_file
假设m和n是数字
在这里,您正在使用:
sed
的地址,指定ranges by line numbers:可以在没有地址的情况下给出Sed命令,在这种情况下,将对所有输入行执行命令;使用一个地址,在这种情况下,只对与该地址匹配的输入行执行命令; 或两个地址,在这种情况下,将对所有输入行执行命令,该输入行与从第一个地址开始并继续到第二个地址的行的包含范围相匹配。有关地址范围的三点注意事项:语法是addr1,addr2(即地址用逗号分隔); addr1匹配的行将始终被接受,即使addr2选择了较早的行;如果addr2是正则表达式,则不会针对addr1匹配的行进行测试。
答案 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)
使用head
和tail
head -$start file.txt|tail -$(($end - $start))