免费注册 查看新帖 |

Chinaunix

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

shell sed 查找文件中匹配 较高级应用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-30 21:47 |只看该作者 |倒序浏览
各位大神 。。。之所以说是较高级的应用,是因为以小弟水平  觉得比较难解决
问题如下:
在一个保存某目录文件信息的文件中(此文件名为ftp_filesize.txt) ftp_filesize.txt文件信息如下: 我想要查找"liu.sh"这个文件的大小。
total 0
-rw-rw-r--   1 root     root            0 Nov 05 12:50 01.txt
-rw-rw-r--   1 root     root            0 Nov 05 13:08 011.txt
-rw-rw-r--   1 root     root            0 Nov 05 12:50 02.txt
-rw-rw-r--   1 root     root            0 Nov 05 12:51 03.txt
-rw-rw-r--   1 root     root            0 Nov 05 12:52 04.txt
-rw-rw-r--   1 root     root            0 Nov 05 13:25 05.txt
-rw-rw-r--   1 root     root           19 Nov 14 14:08 06.txt
drw-rw-r--   1 root     root          512 Nov 09 20:46 a
-rw-rw-r--   1 root     root          121 Nov 16 22:24 a.sh
-rw-rw-r--   1 root     root         1609 Oct 14 15:49 liu.sh
-rw-rw-r--   1 root     root         4259 Sep 25 16:58 login.c
drw-rw-r--   1 root     root          512 Nov 11 15:39 MP4
-rw-rw-r--   1 root     root      8219710 Nov 11 15:31 mplayer
-rw-rw-r--   1 root     root          388 Nov 12 21:18 new.c
-rw-rw-r--   1 root     root         2832 Nov 13 16:32 newfile.c
-rw-rw-r--   1 root     root         2528 Nov 13 16:32 newfile02.c

-rw-rw-r--   1 root     root         1444 Nov 06 16:42 rcS
-rw-rw-r--   1 root     root         1457 Sep 25 19:06 resetuart.htm
-rw-rw-r--   1 root     root          937 Sep 18 19:30 shell.txt
-rw-rw-r--   1 root     root      7716352 Nov 11 15:45 test.avi
-rw-rw-r--   1 root     root         5858 Nov 06 16:31 time
-rw-rw-r--   1 root     root          238 Nov 06 13:14 time.c
-rw-rw-r--   1 root     root         1674 Nov 06 22:40 victor.sh

我觉得首先要用字符匹配找到“liu.sh”这个文件所在的行,然后再用sed  awk去提取对应的文件大小,即是“1609”
由于是新手  我不知到该怎么样比较有效的去查找所在行  ,请大神们帮忙看下问题 。。。
先谢过啦!!!

论坛徽章:
0
2 [报告]
发表于 2011-11-30 21:54 |只看该作者
由于我这个文件的信息是用FTP 指令的ls -l 然后重定位到ftp_filesize.txt文件的     liu.sh这个文件名是已知的,如果linux下FTP 指令可以通过文件名  类似“ls -l +文件名”这样的指令的话    那就可以直接获取liu.sh这一个文件的信息  既是“-rw-rw-r--   1 root     root         1609 Oct 14 15:49 liu.sh”   这样的话   ftp_filesize.txt文件中就只有这一行信息    那获取文件大小就变得很容易了    可是我暂时没找到这样的指令   好像也没有这样的指令   所以我在这儿也想确认到底有没有   。。。如果有的话,那就太好了    希望大神帮忙看下啊

论坛徽章:
0
3 [报告]
发表于 2011-11-30 22:25 |只看该作者
awk '/liu.sh/{print $5}' newfile

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
4 [报告]
发表于 2011-11-30 23:43 |只看该作者
awk '/liu.sh$/{print $(NF-4)}'

论坛徽章:
0
5 [报告]
发表于 2011-12-01 10:45 |只看该作者
如各位大神所说   问题解决    太感谢了

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
6 [报告]
发表于 2011-12-01 13:00 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2011-12-01 16:58 |只看该作者
大神  我需要追问   
我的初衷要解决的问题是:初始存在一个newfile.txt文件,里面保存这“liu.sh”这样一个字符串,也就是这个文件名,我本来打算用for i in `cat newfile.txt`

论坛徽章:
0
8 [报告]
发表于 2011-12-01 17:02 |只看该作者
不好意思  刚才点错键   还没写完   

大神  我需要追问   
我的初衷要解决的问题是:初始存在一个newfile.txt文件,里面保存这“liu.sh”这样一个字符串,也就是这个文件名,我本来打算用for i in `cat newfile.txt`    do   filename=$i  done   这样来获取"liu.sh"字符串。然后再用“awk '/$filename$/{print $(NF-4)}'”   来获取文件大小的信息,可是这样用 "$filename"   代替了   “liu.sh”后就不能成功获取大小的信息    肯定是这里不能用 '/$filename$/{print $(NF-4)}'     这样间接了一句  该怎么操作呢   ?
谢谢大神   再帮忙看看吧

论坛徽章:
0
9 [报告]
发表于 2011-12-01 17:04 |只看该作者
看来需要在awk sed上花点功夫了    现在时间太紧  希望大家帮忙看下

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
10 [报告]
发表于 2011-12-01 17:55 |只看该作者
awk '{if($NF=="'$filename'") print $(NF-4)}'
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP