首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Bash文件操作

Bash文件操作
EN

Stack Overflow用户
提问于 2013-05-28 06:10:27
回答 5查看 743关注 0票数 3

从文件中提取第3-5行和第11-13行的最佳方法是什么(一行,最好使用head和tail)?

这就完成了第一部分,但是我如何才能在不弄乱的情况下抓取11-13呢?xD

代码语言:javascript
运行
复制
head -5 some_file | tail -3 > output_file
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 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行,所以你不能仅仅通过管道把它传递给尾部-你需要一个新的命令,所以看看更复杂的东西,比如:

代码语言:javascript
运行
复制
head -5 some_file > output_file; tail -3 some_file >> output_file
票数 8
EN

Stack Overflow用户

发布于 2013-05-28 06:19:54

awk中,你可以这样做:

代码语言:javascript
运行
复制
awk '(NR>=3 && NR<=5) || (NR>=11 && NR<=15) {print}' some_file >output_file

Glenn Jackman建议的简化版本:

代码语言:javascript
运行
复制
awk '(NR >= 3 && NR <= 5) || (NR >= 11 && NR <= 15)' some_file >output_file
票数 6
EN

Stack Overflow用户

发布于 2013-05-28 06:15:18

最好的方法是使用sed

代码语言:javascript
运行
复制
sed '1,2d; 6,10d; 14,$d' some_file

引号中的位是命令,分号是命令分隔符。1,2d6,10d分别删除第1到2行和第6到10行,14,$d删除第14行到文件末尾。我不得不承认我更喜欢alexis的答案:

代码语言:javascript
运行
复制
sed -n '3,5p; 11,13p' some_file

如果只是因为它说“打印3-5行和11-13行”,而不是我的,它说删除你不想要的行。

如果您坚持只使用headtail

代码语言:javascript
运行
复制
(head -5 some_file | tail -3; head -13 some_file | tail -3)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16781168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档