所以我有一个文件,我想删掉它的前33行和后6行。我想做的是将整个文件放入cat命令(cat文件)中,然后使用"head“和"tail”命令删除这些部分,但我不知道如何做到这一点。(这只是一个想法)
cat file - head -n 33 file - tail -n 6 file
我该怎么做呢?使用"sed“(如何)可以做到这一点吗?提前谢谢。
发布于 2013-04-20 17:08:00
这可能就是你想要的:
$ tail -n +34 file | head -n -6
请参阅tail
-n,-n =K输出最后K行,而不是最后10行;或者使用-n +K输出以第K行开头的行
和head
-n,-n=-K打印前K行,而不是前10行;使用前导'-',打印每个文件中除最后K行之外的所有行
手册页。
示例:
$ cat file
one
two
three
four
five
six
seven
eight
$ tail -n +4 file | head -n -2
four
five
six
请注意,您不需要cat
(请参阅UUOC)。
发布于 2013-04-20 08:52:45
首先计算总行数,然后打印中间部分:(读取文件两次)
l=$(wc -l file)
awk -v l="$l" 'NR>33&&NR<l-6' file
或者在数组中加载文件,然后打印所需的行:(只读一次文件)
awk '{a[NR]=$0}END{for(i=34;i<NR-6;i++)print a[i]}' file
或者awk with head,不要这样想太多:(读取文件两次)
awk 'NR>33' file|head -n-6
发布于 2013-04-20 18:25:38
sed -n '1,33b; 34{N;N;N;N;N};N;P;D' file
这将会工作+
https://stackoverflow.com/questions/16115335
复制相似问题