免费注册 查看新帖 |

Chinaunix

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

[文本处理] awk 中if [复制链接]

论坛徽章:
0
发表于 2014-12-16 14:24 |显示全部楼层
1.txt文件内容是:
   Adapter0  sda
   Adaper1   sdb
变量raid和sd_disk;raid变量有初始值,可以从键盘输入
想实现raid=$1时,让sd_disk=$2

论坛徽章:
0
发表于 2014-12-16 14:31 |显示全部楼层
回复 1# 刘彩霞

不是一定用awk,只要实现即可,是我刚开始总想着用awk实现,所以标题就写成了awk


   

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
发表于 2014-12-16 14:38 |显示全部楼层
问题描述不清晰,什么时候让raid=$1时,让sd_disk=$2

论坛徽章:
0
发表于 2014-12-16 14:42 |显示全部楼层
回复 4# super皮波


就是说当变量raid和1.txt的文件第一列相等时,就让变量sd_disk等于第二列的数值



   

论坛徽章:
0
发表于 2014-12-16 15:03 |显示全部楼层
  1. #!bin/sh
  2. raid=Adapter0
  3. awk '{if($1`/^'$raid'/)print $2}' 1.txt
复制代码
这样可以实现raid变量等于1.txt的第一列时,打印出来文件的第二列;我想实现的就是这种情况下将第二列的数值赋值给sd——disk变量。



   

论坛徽章:
3
金牛座
日期:2013-08-26 10:25:02摩羯座
日期:2013-09-09 15:14:322015年亚洲杯之约旦
日期:2015-05-06 09:33:56
发表于 2014-12-16 15:05 |显示全部楼层
[root@web ~]# ./t.sh
input raid: Adapter0
sda
[root@web ~]# cat t.sh
#!/bin/bash
read -p "input raid: " raid
sd_disk=$(awk  '/'"$raid"'/ {print $2}' 1.txt)
echo $sd_disk
[root@web ~]#

是这意思不?

论坛徽章:
0
发表于 2014-12-16 15:07 |显示全部楼层
回复 7# kooleon


就是这个意思,谢谢


   

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
发表于 2014-12-16 15:07 |显示全部楼层
sd_disk=$(awk  '/'"$raid"'/ {print $2}' 1.txt)  原来还可以这样写。

论坛徽章:
0
发表于 2014-12-16 15:10 |显示全部楼层
回复 9# super皮波

我也一直不知道可以这么做,学习了。

看来我还需要补习语文,我没描述清楚我的问题。哎,语文得从娃娃抓起,我这辈子不知道没啥希望了。


   

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
发表于 2014-12-16 19:12 |显示全部楼层
  1. #!/bin/bash

  2. read -p "input raid: " raid;
  3. while read line; do
  4.         if [[ "$line" =~ "$raid" ]]; then
  5.                 sd_disk=${line#* };
  6.                 echo $sd_disk;
  7.         fi;
  8. done < testfile;
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP