免费注册 查看新帖 |

Chinaunix

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

[文本处理] 怎么把AWK的变量传出来? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-27 10:18 |只看该作者 |正序浏览
今天依然编写我的小工具,但是又遇到一个问题,还望请教一下。

function CheckParmeta()
{

for((i=0;i < ${#InPutMessage[@]}; i++))
do
if [ "${InPutParment[$i]}" == "" ]
then
   read -p "${InPutMessage[$i]}(defauls : ${InPutDefauls[$i]}): " InPutParment[$i]

   if [ ${InPutCheckTy[$i]} -eq 1 ]      #IP アドレスチェック
   then
      echo ${InPutParment[$i]} | awk -F '.' '
      NF==4 {
        for(i=1;i<=NF;i++) {
          if ((i==4) && (($i == 0) || ($i == 255))) {printf "123"; exit}
          if (($i > 255) || ($i !~ /^[0-9]*$/)) {printf "234";exit}
        }
      }
      NF!=4 {
          printf "456";
          exit
      }'
   elif [ ${InPutCheckTy[$i]} -eq 2 ]   
   then
     echo "temp!"
   elif [ ${InPutCheckTy[$i]} -eq 3 ]   
   then
     echo "temp!"
   fi

   if [ $a -eq 1 ]
   then
     exit 1
   fi
fi
done
}

AWK这一段的动作是这样子的,InPutParment得到我输入的IP地址,我通过AWK来判断地址是否合法,如果不合法就退出程序。我在awk中加了exit,但是好像只是退出了awk程序,shell还是没有退出,只是啥原因

论坛徽章:
0
15 [报告]
发表于 2014-07-04 13:23 |只看该作者
回复 14# Herowinter

里面的[0-1]{1}这种也很奇葩,话说你怎么不自己写?

论坛徽章:
771
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
14 [报告]
发表于 2014-07-04 13:07 |只看该作者
本帖最后由 Herowinter 于 2014-07-04 13:11 编辑

回复 13# 用户名注册后不能更改
我直接取得google搜索的第一个结果,没细看这个正则。。。
长就长在同样的一个东西[0-255]他写了3遍,没写成
你..{3}这种。

   

论坛徽章:
0
13 [报告]
发表于 2014-07-04 13:03 |只看该作者
回复 11# Herowinter

话说你这怎么这么长……
  1. 1299 13:00:28 root@localhost:~/shelltest # echo "255.255.255.255"|grep -Pwq "(([01]?\d?\d|2([0-4]\d|5[0-5]))\.){3}([01]?\d?\d|2([0-4]\d|5[0-5]))"&&echo "valid"||echo "invalid"
  2. valid
  3. 1300 13:00:38 root@localhost:~/shelltest # echo "255.255.255.256"|grep -Pwq "(([01]?\d?\d|2([0-4]\d|5[0-5]))\.){3}([01]?\d?\d|2([0-4]\d|5[0-5]))"&&echo "valid"||echo "invalid"
  4. invalid
  5. 1301 13:00:41 root@localhost:~/shelltest # echo "010.192.025.038"|grep -Pwq "(([01]?\d?\d|2([0-4]\d|5[0-5]))\.){3}([01]?\d?\d|2([0-4]\d|5[0-5]))"&&echo "valid"||echo "invalid"
  6. valid
  7. 1302 13:00:57 root@localhost:~/shelltest #
复制代码

论坛徽章:
0
12 [报告]
发表于 2014-07-04 12:49 |只看该作者
回复 10# 一世缥缈

  1. 1289 12:46:08 root@localhost:~/shelltest # ipcalc --help
  2. Usage: ipcalc [OPTION...]
  3.   -c, --check         Validate IP address for specified address family
  4.   -4, --ipv4          IPv4 address family (default)
  5.   -6, --ipv6          IPv6 address family
  6.   -b, --broadcast     Display calculated broadcast address
  7.   -h, --hostname      Show hostname determined via DNS
  8.   -m, --netmask       Display default netmask for IP (class A, B, or C)
  9.   -n, --network       Display network address
  10.   -p, --prefix        Display network prefix
  11.   -s, --silent        Don't ever display error messages

  12. Help options:
  13.   -?, --help          Show this help message
  14.   --usage             Display brief usage message
  15. 1290 12:46:11 root@localhost:~/shelltest #
复制代码
没有--version参数不能查看版本,不过你这没有-6参数,大概是IPv6出来之前的版本了吧。

论坛徽章:
771
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
11 [报告]
发表于 2014-07-04 10:59 |只看该作者
回复 10# 一世缥缈
那用楼上版主说的那个很长的IP地址的正则来检测吧。
  1. [masonzhu@rat122 ~]$ ip_reg="^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$"

  2. [masonzhu@rat122 ~]$ echo "111.222.333.444"|grep -Pq "$ip_reg"&&echo "valid"||echo "invalid"
  3. invalid
  4. [masonzhu@rat122 ~]$ echo "127.0.0.1"|grep -Pq "$ip_reg"&&echo "valid"||echo "invalid"
  5. valid
  6. [masonzhu@rat122 ~]$ echo "255.255.255.255"|grep -Pq "$ip_reg"&&echo "valid"||echo "invalid"
  7. valid
  8. [masonzhu@rat122 ~]$ echo "255.255.255.256"|grep -Pq "$ip_reg"&&echo "valid"||echo "invalid"
  9. invalid

复制代码

论坛徽章:
0
10 [报告]
发表于 2014-07-04 10:35 |只看该作者
回复 4# Herowinter


    貌似ipcalc命令没有-c的选项呢?这不是通过IP地址去计算其他的地址的么?你

ipcalc -c 111.222.333.444
ipcalc: bad argument -c: unknown option
Usage: ipcalc [OPTION...]
  -b, --broadcast     Display calculated broadcast address
  -h, --hostname      Show hostname determined via DNS
  -m, --netmask       Display default netmask for IP (class A, B, or C)
  -n, --network       Display network address
  -p, --prefix        Display network prefix
  -s, --silent        Don't ever display error messages

Help options:
  -?, --help          Show this help message
  --usage             Display brief usage message

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

论坛徽章:
0
8 [报告]
发表于 2014-06-27 13:46 |只看该作者
嘛,其实也可能是楼主在日企。

论坛徽章:
771
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
7 [报告]
发表于 2014-06-27 12:45 |只看该作者
回复 6# jgrlj322
应该依据这一行。
  1. #IP アドレスチェック
复制代码


   
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP