从文件中提取第3-5行和第11-13行的最佳方法是什么(一行,最好使用head和tail)?
这就完成了第一部分,但是我如何才能在不弄乱的情况下抓取11-13呢?xD
head -5 some_file | tail -3 > output_file
发布于 2013-05-28 06:15:02
我认为sed
可以很容易地做到这一点,sed -n -e "3,5p" -e "11,13p" some_file > output_file
-n
告诉sed不要输出每一行。-e'
告诉sed要打印哪些零件。我不知道如何使用头部和尾部:head -5
只给了你前5行,所以你不能仅仅通过管道把它传递给尾部-你需要一个新的命令,所以看看更复杂的东西,比如:
head -5 some_file > output_file; tail -3 some_file >> output_file
发布于 2013-05-28 06:19:54
在awk
中,你可以这样做:
awk '(NR>=3 && NR<=5) || (NR>=11 && NR<=15) {print}' some_file >output_file
Glenn Jackman建议的简化版本:
awk '(NR >= 3 && NR <= 5) || (NR >= 11 && NR <= 15)' some_file >output_file
发布于 2013-05-28 06:15:18
最好的方法是使用sed
sed '1,2d; 6,10d; 14,$d' some_file
引号中的位是命令,分号是命令分隔符。1,2d
和6,10d
分别删除第1到2行和第6到10行,14,$d
删除第14行到文件末尾。我不得不承认我更喜欢alexis的答案:
sed -n '3,5p; 11,13p' some_file
如果只是因为它说“打印3-5行和11-13行”,而不是我的,它说删除你不想要的行。
如果您坚持只使用head
和tail
(head -5 some_file | tail -3; head -13 some_file | tail -3)
https://stackoverflow.com/questions/16781168
复制相似问题