什么是最好的方法(一行,最好使用头部和尾部)从文件中提取行3-5和11-13?
这完成了第一部分,但我怎样才能抓住11-13没有一团糟? 的xD
head -5 some_file | tail -3 > output_file
我觉得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
在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
最好的方法是用sed
sed '1,2d; 6,10d; 14,$d' some_file
引号中的位是命令,分号是命令分隔符。 1,2d
和6,10d
删除第1行到第2行,第6到第10行,第14行14,$d
删除第14行直到文件结尾。 我不得不承认我更喜欢亚历克西斯的答案:
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)
尝试这个:
sed -n -e 3,5p -e 11,13p some_file
你可以合并两个管道:
(head -5 some_file | tail -3; head -13 some_file | tail -3) > output_file