awk的一些小问题

huasheng724 2013-02-27 04:14:43
在bash脚本里面调用awk:
我的bash脚本中有个manage的变量,值是radio0 raido1 radio2
现在想使用awk对其分割,间隔符是空格,分割出来的$1是radio0,这个值我在bash脚本中其他地方要用到。请问awk应该怎么写才好,其中对$1也就是radio0的操作还是蛮多的。
...全文
328 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
justkk 2013-03-14
  • 打赏
  • 举报
回复
a是从文件/etc/awrt/config/managed_radio 中取值
huasheng724 2013-02-27
  • 打赏
  • 举报
回复
justkk大神,while read a,其中的a是怎么取值的? zhangtie8527大神,我是在shell里面分割,具体的awk该如何写好?用awk自带的split函数分割后,应该保持具体的分割个数,用NF?具体又该如何写?
fyz_Winnie 2013-02-27
  • 打赏
  • 举报
回复
需求描述不清,是要在awk里面用,还是将值传到外面在shell里用? awk 有 split 函数可以按指定字符分割到数组中,然后在awk里面用数组循环 如:split('"${manage}"',A," ") ;A[1]~A[n] 存放相应的值 直接在shell里面分割的话就要自己写个小循环(用 for x in ……)
justkk 2013-02-27
  • 打赏
  • 举报
回复
或者 set -- `cat /etc/awrt/config/managed_radio` while [ $# -ne 0 ] do echo $1 shift done
justkk 2013-02-27
  • 打赏
  • 举报
回复
就是为了挨个显示?试试 while read a do echo $a done < /etc/awrt/config/managed_radio
huasheng724 2013-02-27
  • 打赏
  • 举报
回复
我贴部分代码出来: #!/bin/sh # AWRT ZoomAgent Daemon MANAGE=`cat /etc/awrt/config/managed_radio` set_wireless_default() { LEN=0 while [ $LEN -lt ${#MANAGE} ] do MANAGE_RADIO="${MANAGE:$LEN:6}" echo "manage radio_id is $MANAGE_RADIO" LEN=$(( $LEN + 7 )) done } 原来的代码大概是这样,固定截取了6个字符的来获取radio0~2,现在想换成用awk来分隔,如何实现呢?大神们。原来的代码是纯bash的。
huasheng724 2013-02-27
  • 打赏
  • 举报
回复
情况是可能不止3个radio,可能是N个radio,那么我在awk的循环该如何处理呢?
fyz_Winnie 2013-02-27
  • 打赏
  • 举报
回复
#manage="radio0 raido1 radio2 #echo ${manage} radio0 raido1 radio2 #var1=` echo ${manage} | awk '{print $1}' ` #echo ${var1} radio0 后面的2个值可以类似取出 , 注意上面赋值的符号是“·”,即键盘左上角ESC下面的那个键
justkk 2013-02-27
  • 打赏
  • 举报
回复
只是想获得radio0吗? manage="radio0 raido1 radio2" a=$(echo ${manage}|awk '{print $1}') echo $a

2,161

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 UNIX文化
社区管理员
  • UNIX文化社区
  • 文天大人
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧