免费注册 查看新帖 |

Chinaunix

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

awk里面调用rm ls这些命令要怎么做呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-23 13:27 |只看该作者 |倒序浏览
下面的代码实现了将/dev/mtdblock/5超过50%时候,打印出来。
  1. /tmp $ df -h|grep /dev/mtdblock/5|awk '{if($5+0>=50) print($0)}'
  2. /dev/mtdblock/5          14.0M      7.0M      7.0M  50% /resource
复制代码
下面的代码实现的是将.csv文件按文件名排序,然后然后输出最旧的一个文件。(我的文件名是按时间命名的)

  1. /tmp $ ls -l *.csv
  2. -rw-r--r--    1 root     root            0 Feb 23 13:03 2012022301.csv
  3. -rw-r--r--    1 root     root            0 Feb 23 13:03 2012022302.csv
  4. -rw-r--r--    1 root     root            0 Feb 23 13:03 2012022303.csv
  5. -rw-r--r--    1 root     root            0 Feb 23 13:03 2012022304.csv
  6. -rw-r--r--    1 root     root            0 Feb 23 13:04 2012022305.csv

  7. /tmp $ rm 'ls -lur *.csv |tail -1'

复制代码
请问下如何将在awk里面调用
  1. rm 'ls -lur *.csv |tail -1'
复制代码
我想做的就是当/dev/mtdblock/5使用超过50%的时候,删除/tmp目录下最旧的.csv文件

论坛徽章:
6
酉鸡
日期:2013-11-04 15:30:02巳蛇
日期:2014-01-23 10:36:23双鱼座
日期:2014-01-23 13:08:332015亚冠之鹿岛鹿角
日期:2015-09-03 14:36:002015亚冠之武里南联
日期:2015-09-18 10:48:1315-16赛季CBA联赛之山西
日期:2016-05-05 00:05:33
2 [报告]
发表于 2012-02-23 13:45 |只看该作者
可以通过管道,再加上xargs试试

论坛徽章:
0
3 [报告]
发表于 2012-02-23 14:44 |只看该作者
  1. awk -F '%| +' '$5>=50' file
复制代码
你那个大于50%的取法对吗?

论坛徽章:
0
4 [报告]
发表于 2012-02-23 14:53 |只看该作者
是对的,我验证了。

论坛徽章:
0
5 [报告]
发表于 2012-02-23 17:01 |只看该作者
回复 2# Dannysd


awk 里面没法直接调rm之类的命令吗?
   

论坛徽章:
0
6 [报告]
发表于 2012-02-23 17:07 |只看该作者
引号+ |

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

论坛徽章:
0
8 [报告]
发表于 2012-02-23 17:14 |只看该作者
可以用system调用外部shell

以下代码成功
  1. df -h|grep /dev/mtdblock/5|awk '{if($5+0>=50) system("ls -lu *.csv |tail -1")}
复制代码
但下面这行失败了
  1. df -h|grep /dev/mtdblock/5|awk '{if($5+0>=50) system("rm -rf 'ls -lu *.csv |tail -1'")}'
复制代码

论坛徽章:
0
9 [报告]
发表于 2012-02-23 17:45 |只看该作者
成功了,最终版本:
  1. df -h|grep /dev/mtdblock/5|awk '{if($5+0>=50) system("rm -rf `ls -u /tmp/*.csv |tail -1`")}'
复制代码
应该将ls 那条命令用``包括起来,而不是用''

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
10 [报告]
发表于 2012-02-23 17:57 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP