首页 > 试题广场 >

下面个些命令可以查看file1文件的第300-500行的内容

[不定项选择题]
下面哪些命令可以查看file1文件的第300-500行的内容?
  • cat file1 | tail -n +300 | head -n 200
  • cat file1| head -n 500 | tail -n +300
  • sed -n '300,500p' file1
ABC
head是从文件头部开始
tail是从文件尾部开始
编辑于 2015-01-26 21:49:13 回复(0)
更多回答
正确答案应该是BC

输入head --help可看到如下解释:

head -n, --lines=[-]NUM       
# print the first NUM lines instead of the first 10;
# with the leading '-', print all but the last NUM lines of each file

意思就是

head -n k          # 打印前k行

head -n -k         # 打印除最后k行外的所有内容

输入tail --help看到如下解释:

tail -n, --lines=[+]NUM       
# output the last NUM lines, instead of the last 10;
# or use -n +NUM to output starting with line NUM

意思就是:

tail -n k          # 打印最后k行
tail -n +k         # 从k行开始打印
回到这道题,输出300行-500行的内容。

A选项:从第300行开始,接着输出前200行的内容,但这里的200行包括了第300行,不包括第500行。所以应该改为cat file1 | tail -n +300 | head -n 201。

B选项:先取出前500行,再从300行开始。 cat file1 | head -n 500 | tail -n + 300 ,正确。

C选项:sed命令 p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~

sed -n '300-500p' 打印300-500行,正确。

编辑于 2017-02-10 15:32:09 回复(0)
方法一:
tail -n +K是输出从第K行开始的内容。
先输出从第300行开始的内容,然后输出前200行。
cat file1 | tail -n +300 | head -n 200

方法二:
tail -n K是输出最后K行的内容。
先输出前500行,然后输出其中从第300行开始的内容。
cat file1| head -n 500 | tail -n + 300

方法三:
直接通过sed -n命令获取指定范围的内容,其中p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行。
sed -n ‘300,500p’ file1
编辑于 2015-08-31 17:40:10 回复(4)
亲自测试,A输出300-499;BC输出300-500
发表于 2016-09-09 20:14:01 回复(3)
只有C是对的,A选项看的是300到499行,B选项看的是201到500行
发表于 2015-04-11 00:13:57 回复(6)
答案应该是BC
A:tail -n +300的意思是从开头第300行开始查看。
head -n 200的意思是查看开头200行。
两个合起来就是从开头第三百行开始查看,查看前200行,那么就是300-499
B:查看开头500行,再从这500行的开头第300行开始输出,那么就是300-500行
C:sed命令直接指出范围。
发表于 2017-03-19 12:54:22 回复(2)
head -n  10 :打印前10行
head -n -10 :除了最后的10行
tail    -n +10 :跳过前面的9行,从第10行开始打印


发表于 2021-03-09 10:54:15 回复(0)
BC

cat file1 | tail -n +300 | head -n 200 取的是第300-499行的内容
发表于 2015-03-08 14:43:05 回复(0)
第300~第500行总共有201行:
500-300+1=201

发表于 2019-08-31 16:32:39 回复(0)

sed命令 p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~

sed -n '300-500p' 打印300-500行
发表于 2019-06-21 22:01:50 回复(0)
tail 命令从指定点开始将 File 参数指定的文件写到标准输出。如果没有指定文件,则会使用标准输入。
如果值的前面有 +(加号),从文件开头指定的单元数开始将文件写到标准输出。如果值的前面有 -(减号),则从文件末尾指定的单元数开始将文件写到标准输出。如果值前面没有 +(加号)或 -(减号),那么从文件末尾指定的单元号开始读取文件。 
发表于 2017-05-26 09:48:35 回复(0)
发表于 2020-04-02 18:06:03 回复(0)
答案有问题          BC是对的   A不对
首先亲自去实践一下是最好的办法。过程我就不贴了
解释下 tail -n +X 表示查看从第X行到尾行
这样的话A选项就是从第300行开始一共显示200行,那么第500行就显示不出来了,只到499。(200-499正好300个)

B的话先显示第1行到第500行(共500个),然后再从第300行开始显示,所以B对的。有的同学说B是201到500行,错了!
发表于 2017-03-14 22:14:31 回复(0)
发表于 2022-12-19 15:01:23 回复(0)
不是应该是200吗
发表于 2020-09-13 14:46:19 回复(0)
cat file1 | tail -n +300 | head -n 200
先用tail筛选出从第300行到最后,再用head选出剩下的前200行,所以不包括第500行,300-499
cat file1 | head -n 500 | tail -n +300
先选出前500行,再用tail选出这500行的后300行,300-500
sed -n '300,500p' file1
300-500行
发表于 2019-03-14 17:11:49 回复(0)
bc是对的
发表于 2018-10-02 15:56:52 回复(0)
亲测BC选项是对的,自己也可以试试!
B选项中“head -n 500”, 表示读前500行(1-500),“tail -n +300”表示从第300行开始。
发表于 2017-05-23 14:40:15 回复(0)
tail -n +NUMBER 和 tail -n NUMBER的含义是不一样的,前者代表打印从第NUMBER行到最后一行,后者的含义是打印最后NUMBER行
发表于 2016-09-10 11:49:48 回复(0)
试了一下, abc都可以、
发表于 2016-08-25 16:04:10 回复(0)
B不对啊。。。。

发表于 2016-03-31 11:30:55 回复(0)