免费注册 查看新帖 |

Chinaunix

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

[文本处理] 如何判断变量为特殊符号 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-05-08 12:26 |只看该作者 |倒序浏览
如下所示  请教如何判断 变量a 是否为 特殊符号 * ??
因为我需要对特殊符号进行处理
root@xxxx-linux]# cat attri.list |awk '{print $2}'
*
yes
yes

root@xxxx-linux]# a=`cat attri.list |awk '{print $2}'|head -1 `
*

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
2 [报告]
发表于 2014-05-08 14:19 |只看该作者
本帖最后由 关阴月飞 于 2014-05-08 14:20 编辑
  1. grep -q '^*$' <<<"$a"  &&   echo '$a 值为 * '
复制代码

论坛徽章:
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
3 [报告]
发表于 2014-05-08 14:30 |只看该作者
shintoky 发表于 2014-05-08 12:26
如下所示  请教如何判断 变量a 是否为 特殊符号 * ??
因为我需要对特殊符号进行处理
root@xxxx-linux]# c ...



好像这样就可以了:
  1. [seesea@UC ~]# a='*'   
  2. [seesea@UC ~]# echo "$a"
  3. *
  4. [seesea@UC ~]# [ "$a" = "*" ] && echo "=" || echo "<>"
  5. =
复制代码

论坛徽章:
3
水瓶座
日期:2014-03-25 17:08:042015亚冠之塔什干棉农
日期:2015-08-10 10:45:122015亚冠之萨济拖拉机
日期:2015-08-13 16:05:24
4 [报告]
发表于 2014-05-08 14:31 |只看该作者
回复 1# shintoky


    如果只是*,那grep '*'或者grep \*不就可以? 但是如果还要判断?\$这些多个的特殊符号,就不知道怎么弄了,求高手指点

论坛徽章:
0
5 [报告]
发表于 2014-05-08 14:58 |只看该作者
回复 2# 关阴月飞

是这样的,脚本打印$b 无论如何打印不出符号“*”

cat 1|while read entry
do
{
a=`echo $entry|awk '{print $1}'`
b=`echo $entry|awk '{print $2}'`
echo $b
}
done

[root@-linux ]# cat 1
Host *
ation yes
sted yes
[root@-linux ]#

论坛徽章:
3
水瓶座
日期:2014-03-25 17:08:042015亚冠之塔什干棉农
日期:2015-08-10 10:45:122015亚冠之萨济拖拉机
日期:2015-08-13 16:05:24
6 [报告]
发表于 2014-05-08 16:30 |只看该作者
回复 5# shintoky


    给你的$entry加上双引号,还有$b也加上双引号,就可以打印*了

论坛徽章:
0
7 [报告]
发表于 2014-05-08 16:46 |只看该作者
回复 6# su8610


    谢谢!  还有个小问题,
当 b=`echo "$entry"|awk '{$1="";print}'`
打印 “$b"
echo \"$b\"

$b前面总有一个空格?


" 0"

" 2400"

" yes"

" no"

论坛徽章:
0
8 [报告]
发表于 2014-05-08 23:39 |只看该作者
shintoky 发表于 2014-05-08 16:46
回复 6# su8610

    谢谢!  还有个小问题,
当 b=`echo "$entry"|awk '{$1="";print}'`
打印 “$b"
echo \"$b\"

$b前面总有一个空格?


" 0"

" 2400"

" yes"

" no"


awk的OFS。
最后的输出实质上是:
$1+OFS+$2

论坛徽章:
3
水瓶座
日期:2014-03-25 17:08:042015亚冠之塔什干棉农
日期:2015-08-10 10:45:122015亚冠之萨济拖拉机
日期:2015-08-13 16:05:24
9 [报告]
发表于 2014-05-09 14:16 |只看该作者
回复 7# shintoky


    为什么echo $b那里的双引号要反义呢?加反义就变成将双引号括在$b的内容里面了,像这样词首的空格是会打印出来的。如果不反义就不会了

论坛徽章:
1
处女座
日期:2014-06-01 17:09:46
10 [报告]
发表于 2014-05-11 20:31 |只看该作者
num=`cat attri.list |awk '{print $2} | grep “*”`
[ $a == “*” ] && echo "ok" || echo "cuowu"
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP