LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 864|回复: 9

两个shell编程的问题

[复制链接]
发表于 2006-9-25 15:57:47 | 显示全部楼层 |阅读模式
1.如何判断一个字符窜符合一定的格式。例如我想先判断一个字符窜是否符合MAC地址的格式,如果符合再执行相应的命令
2.能不能在awk和sed中使用shell脚本中的变量?
发表于 2006-9-25 23:07:53 | 显示全部楼层
1,用正则表达式
2,能,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-25 23:48:37 | 显示全部楼层
1.怎样使用正则表达式。比如说我想判断是否为MAC地址,
   [ "$MAC" = "..:..:..:..:..:.." ]是不对的阿
2.是怎么是用的?
比如这句:echo 1.1.1.0 | awk 'gsub(/0/,$d,$4) {print $0}'
$d是shell中的一个变量。我想把最后一个0用$d的值替换。以上这句不能实现我需要的功能
回复 支持 反对

使用道具 举报

发表于 2006-9-26 08:10:49 | 显示全部楼层

  1. echo 1.1.1.0 | awk -F. 'gsub(/0/,d,$4) {print $0}'  d=$var
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-26 10:29:08 | 显示全部楼层
Post by shizi4838

  1. echo 1.1.1.0 | awk -F. 'gsub(/0/,d,$4) {print $0}'  d=$var
复制代码

奇怪,用gsub替换ip中的0怎么产生的结果是还是我不是我想要得?
echo 1.1.1.0|awk -F. 'gsub(/0/,1,$4) {print $0}'
1 1 1 1
应该是1.1.1.1才对的阿
回复 支持 反对

使用道具 举报

发表于 2006-9-26 15:29:18 | 显示全部楼层
Post by icoming
奇怪,用gsub替换ip中的0怎么产生的结果是还是我不是我想要得?
echo 1.1.1.0|awk -F. 'gsub(/0/,1,$4) {print $0}'
1 1 1 1
应该是1.1.1.1才对的阿


你只用输入域记录符。没有用输出域记录符,你试试这条命令:echo 1.1.1.0|awk 'BEGIN{FS=".";OFS="."}gsub(/0/,1,$4) {print $0}'
回复 支持 反对

使用道具 举报

发表于 2006-9-26 15:29:24 | 显示全部楼层
Post by icoming
奇怪,用gsub替换ip中的0怎么产生的结果是还是我不是我想要得?
echo 1.1.1.0|awk -F. 'gsub(/0/,1,$4) {print $0}'
1 1 1 1
应该是1.1.1.1才对的阿


你只用输入域记录符。没有用输出域记录符,你试试这条命令:echo 1.1.1.0|awk 'BEGIN{FS=".";OFS="."}gsub(/0/,1,$4) {print $0}'
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-26 18:38:38 | 显示全部楼层
恩,谢谢。
那第一个问题该怎么解决呢?
[[ 1.1.1.1 = [0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\} ]]好像不对阿
回复 支持 反对

使用道具 举报

发表于 2006-9-26 23:43:03 | 显示全部楼层
你是想判断IP的吧?

  1. echo 1.1.1.1 |grep "\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}"
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-26 23:49:11 | 显示全部楼层
为什么[[ 1.1.1.1 = [0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\} ]]不对呢?
[[ 1.1.1.1 = [0-9]\.[0-9]\.[0-9]\.[0-9] ]]返回是0的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表