免费注册 查看新帖 |

Chinaunix

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

[文本处理] awk引用的变量值包含特殊字符时如何处理 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-01-29 12:54 |只看该作者 |倒序浏览
如题,在网上找了很久没找到方法,在这里请求一下帮助

etc.
有如下一个文件,包含日期和holiday名字
cat holfile
aaa, 01/01/14
bbb, 04/18/14
ccc, 04/21/14

我想要取当天的日期,作为一个变量$Today, 然后到这个文件里取匹配第二列,如果可以找到符合条件的就返回相应的第一列的值,
当值为确定时没问题,用转义符号\把这个日期中的所有斜杠替换就行了:awk -F, '$2~/01\/01\/14/{print "today is a holiday", $1 }' holfile

匹配内容换成变量的形式, 执行过程中, 变量的值可以争取获取,但是在判断的时候,报syntax error的错,

Today=`date +%D`
awk -F, '$2~/'"$Today"'/{print "today is US BANK holiday",$1}' holfile

---
awk: $2~/01/28/14/{print "today is US BANK holiday"}
awk:              ^ syntax error

菜鸟跪谢!!!

论坛徽章:
3
摩羯座
日期:2014-03-05 14:58:52巨蟹座
日期:2014-04-03 15:14:32摩羯座
日期:2014-04-24 12:50:34
2 [报告]
发表于 2014-01-29 13:13 |只看该作者
try:
  1. $ Today=`date +%D`
  2. $ awk -F,  -v Today="$Today" '$2 ~ Today{print $1}' urfile
复制代码

论坛徽章:
0
3 [报告]
发表于 2014-01-29 13:16 |只看该作者
回复 1# Emily_unix

try this, maybe it could work.
  1. awk -F, '$2~/'"${Today//\//\\/}"'/{print "today is US BANK holiday",$1}' holfile
复制代码

论坛徽章:
0
4 [报告]
发表于 2014-01-29 13:18 |只看该作者
it works, thanks .

回复 2# jackhuntcn


   

论坛徽章:
0
5 [报告]
发表于 2014-01-29 13:32 |只看该作者
这样也可以, 不过怎么理解这个,(这种转义的写法语法是怎样的), 假设如果里面的特殊字符不确定的话是不是就不能用这种方法了?
'"${Today//\//\/}"'


runintostar 发表于 2014-01-29 13:16
回复 1# Emily_unix

try this, maybe it could work.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP