免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 11447 | 回复: 16
打印 上一主题 下一主题

bash如何得到文件中的某一行? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-11 01:46 |只看该作者 |倒序浏览
比如一个文件有10行,能不能任意拿出其中的某一行
比如说把整个文件组织成line[10]的形式,通过line[5]来调用第六行。
谢谢

论坛徽章:
0
2 [报告]
发表于 2007-02-11 02:04 |只看该作者
可以用sed,
sed -n -e '10p' Your-File-Name

论坛徽章:
0
3 [报告]
发表于 2007-02-11 08:18 |只看该作者
many tools  in unix can  do it

论坛徽章:
0
4 [报告]
发表于 2007-02-11 21:16 |只看该作者
如果不是从文件中读,而是在shell中拿出某个命令标准输出的第n行
该怎么办呢?
谢谢

论坛徽章:
0
5 [报告]
发表于 2007-02-11 21:37 |只看该作者
用管道就可以了
Your-Command | sed -n -e '10p'

论坛徽章:
0
6 [报告]
发表于 2007-02-11 21:56 |只看该作者
谢谢。
不过我想把输出逐行取出来,用上面的话对每一行都要调用一次Your-Command
效率不是很低?

另一个问题,现在要把Your-Command | sed -n -e '10p' 的输出字符串保存到一个变量以便与其他字符串进行比较
myString = Your-Command | sed -n -e '10p' 或是 myString = (Your-Command | sed -n -e '10p' )
都不对,请问该如何赋值?

论坛徽章:
4
技术图书徽章
日期:2013-09-23 10:22:37狮子座
日期:2013-10-15 23:31:54卯兔
日期:2013-11-11 17:33:15金牛座
日期:2013-11-15 17:25:28
7 [报告]
发表于 2007-02-11 22:06 |只看该作者
把输出保存在一个临时文件,每次用sed拿你要得那一行就好了
output=/tmp/Your-Command.output
Your-Command > /tmp/$output
myString=`sed -n -e '10p' /tmp/$output`
echo $myString
myString=`sed -n -e '289p' /tmp/$output`
echo $myString

[ 本帖最后由 nbrr 于 2007-2-11 22:07 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2007-02-11 22:31 |只看该作者
多谢
我本来也想到用一个临时文件,但又觉得可能会有文件重名的问题,
当然这种可能性很小。
有不需要使用临时文件的办法么?

论坛徽章:
0
9 [报告]
发表于 2007-02-11 23:25 |只看该作者
很简单,
MyString=$(YourCommand | sed -n -e '10p')
echo $MyString

论坛徽章:
0
10 [报告]
发表于 2007-02-11 23:37 |只看该作者
谢谢
不过这个还是要每得到一行就要运行一次YourCommand,这样效率不是比较低?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP