免费注册 查看新帖 |

Chinaunix

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

[文本处理] awk如何将值赋值给shell,求助! [复制链接]

论坛徽章:
2
狮子座
日期:2014-08-15 00:24:232015元宵节徽章
日期:2015-03-06 15:52:30
发表于 2015-03-05 11:42 |显示全部楼层
本帖最后由 djzhangxing 于 2015-03-05 11:44 编辑

  1. [root@xunjian65 test]# cat ip.txt
  2. 磁盘使用率高于90% 120.150.140.77  volume /root
  3. 磁盘使用率高于90% 120.150.120.156 volume /var
  4. 磁盘使用率高于90% 120.150.140.91  volume /root
  5. [root@xunjian65 test]#
  6. [root@xunjian65 test]# cat tmp.txt
  7. 120.150.140.77   90.319210  90  /root  北京市
  8. 120.150.120.156  3.940574   90  /var   北京市
  9. 120.150.140.91   90.492206  90  /root  北京市
复制代码
想要的结果
如果文件tmp.txt中第二列小于第三列,则将文件ip.txt对应的内容删除掉(IP和分区都要匹配)

(我自己开始用awk写的,写的一半不会了,不知道如何将awk的输出传到shell中
awk '{if($2<4) print $1"\\ " "volume""\\ \\"$4 }END{system("sed -i "/【将打印的内容传到这里来】/d ip.txt"}' tmp.tmp )

论坛徽章:
28
2015年迎新春徽章
日期:2015-03-04 10:16:53午马
日期:2015-03-20 17:11:07亥猪
日期:2015-03-20 17:11:23戌狗
日期:2015-03-20 17:11:33酉鸡
日期:2015-03-20 17:11:47申猴
日期:2015-03-20 17:11:58未羊
日期:2015-03-20 17:12:10子鼠
日期:2015-03-20 17:12:23丑牛
日期:2015-03-20 17:12:40卯兔
日期:2015-03-20 17:12:51辰龙
日期:2015-03-20 17:13:00巳蛇
日期:2015-03-20 17:13:12
发表于 2015-03-05 11:56 |显示全部楼层
给你个山寨版的先......
  1. eval $(awk '$2<$3{print "sed -i \"/$"$1"/d\" ip.txt;"}' tmp.txt)
复制代码
坐等jason大神...

论坛徽章:
6
摩羯座
日期:2013-12-27 09:45:04技术图书徽章
日期:2014-01-27 12:40:06辰龙
日期:2014-02-28 15:12:52巳蛇
日期:2014-03-21 17:06:27未羊
日期:2014-04-15 20:12:41黑曼巴
日期:2016-08-02 11:00:06
发表于 2015-03-05 12:20 |显示全部楼层
awk 'NR==FNR && $2<$3{DEL[$1]=1}NR!=FNR && !DEL[$2]' tmp.txt ip.txt

论坛徽章:
12
IT运维版块每日发帖之星
日期:2015-11-17 06:20:00程序设计版块每日发帖之星
日期:2016-01-19 06:20:0015-16赛季CBA联赛之江苏
日期:2016-01-17 15:31:3915-16赛季CBA联赛之上海
日期:2016-01-16 15:44:3015-16赛季CBA联赛之浙江
日期:2016-01-15 20:38:1815-16赛季CBA联赛之北京
日期:2016-01-09 14:30:15CU十四周年纪念徽章
日期:2016-01-07 12:31:5115-16赛季CBA联赛之四川
日期:2016-01-01 11:49:1515-16赛季CBA联赛之深圳
日期:2015-12-24 14:23:4115-16赛季CBA联赛之山西
日期:2015-12-15 16:22:31技术图书徽章
日期:2015-12-10 17:41:0015-16赛季CBA联赛之北控
日期:2016-02-03 10:03:24
发表于 2015-03-05 12:27 |显示全部楼层
本帖最后由 sync_1521 于 2015-03-05 12:56 编辑

awk 'NR==FNR{if($2<$3) a[$1,$4]++} NR>FNR {if(!a[$2,$4]) print $0}'  tmp.txt ip.txt

看下行不行

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2015-03-05 12:35 |显示全部楼层
How about this ...

$ awk '$2>$3{print "磁盘使用率高于"$3"%",$1,"volume",$4}' tmp.txt > ip.txt

$ cat ip.txt
磁盘使用率高于90% 120.150.140.77 volume /root
磁盘使用率高于90% 120.150.140.91 volume /root

求职 : 机器学习
论坛徽章:
79
2015年亚洲杯纪念徽章
日期:2015-05-06 19:18:572015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之阿尔纳斯尔
日期:2015-09-07 09:30:232015亚冠之萨济拖拉机
日期:2015-10-21 08:26:3915-16赛季CBA联赛之浙江
日期:2015-12-30 09:59:1815-16赛季CBA联赛之浙江
日期:2016-01-10 12:35:21技术图书徽章
日期:2016-01-15 11:07:2015-16赛季CBA联赛之新疆
日期:2016-02-24 13:46:0215-16赛季CBA联赛之吉林
日期:2016-06-26 01:07:172015-2016NBA季后赛纪念章
日期:2016-06-28 17:44:45黑曼巴
日期:2016-06-28 17:44:4515-16赛季CBA联赛之浙江
日期:2017-07-18 13:41:54
发表于 2015-03-05 12:50 |显示全部楼层
  1. awk 'NR==FNR{if($2<$3){a[$1,$4]++}}NR>FNR{if(($2,$4) in a ){p=0}else{p=1}}p' tmp.txt  ip.txt
复制代码

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
发表于 2015-03-05 14:19 |显示全部楼层
回复 1# djzhangxing
  1. [seesea@UC ~]$ awk 'NR==FNR{ar[NR] = $2 < $3 ? 0 : 1; ++lines;}; NR != FNR && ar[NR - lines]' tmp.txt ip.txt
  2. 磁盘使用率高于90% 120.150.140.77  volume /root
  3. 磁盘使用率高于90% 120.150.140.91  volume /root
复制代码

论坛徽章:
2
狮子座
日期:2014-08-15 00:24:232015元宵节徽章
日期:2015-03-06 15:52:30
发表于 2015-03-05 15:15 |显示全部楼层
哈哈,这个比较简单哈~
回复 5# jason680


   

论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015小元宵徽章
日期:2015-03-06 15:58:18每日论坛发贴之星
日期:2015-06-08 22:20:00每日论坛发贴之星
日期:2015-06-08 22:20:00操作系统版块每日发帖之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2015-11-09 06:20:00数据库技术版块每日发帖之星
日期:2016-02-22 06:20:0015-16赛季CBA联赛之上海
日期:2017-01-01 23:58:53
发表于 2015-03-05 15:57 |显示全部楼层
#!/bin/bash
c=`awk '{if($2>$3)print $1}' tmp.txt`

for i in $c
do
        cat ip.txt | grep $i
done

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 10:16:53
发表于 2015-03-05 16:12 |显示全部楼层
awk 'NR==FNR{if($2<$3)a[i++]=$1}NR>FNR{for(k=0;k<i;k++)if(a[k]!=$2){print $0}}' tmp.txt ip.txt >newfile  额好像不能直接对源文件修改
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP