转义字符引发的血案(hive、bash)
来源:互联网 发布:淘宝psn点卡充值 编辑:程序博客网 时间:2024/05/21 12:49
hive hql:从一个字符串“p?a?b?c?ppp?hhh”中以?作为分隔符,找第5段字符串
bash程序:
bash程序:
test.sh报错:
- #!/bin/bash
- hive -e "select (split('p?a?b?c?ppp?hhh','?'))[4] from a limit 1;"
Caused by: java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0修改成:test.sh正确运行原因:
- #!/bin/bash
- hive -e "select (split('p?a?b?c?ppp?hhh','\\\\?'))[4] from a limit 1;"
split的第二个参数是一个regex,而‘?’有特殊的意义(? 零次或一次匹配前面的字符或子表达式),因此需要被转义。在hive中,'\'本身就代表转义字符,因此'\'需要被转义在bash中,'\'本身就代表转义字符,因此'\'需要被转义附录:正则表达式需要转义的特殊字符注释 $ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,那么 $ 还匹配 \n 或 \r 前面的位置。若要匹配 $ 字符本身,请使用 \$。( ) 标记子表达式的开始和结束。可以捕获子表达式以供以后使用。若要匹配这两个字符,请使用 \( 和 \)。* 零次或多次匹配前面的字符或子表达式。若要匹配 * 字符,请使用 \*。+ 一次或多次匹配前面的字符或子表达式。若要匹配 + 字符,请使用 \+。. 匹配除换行符 \n 之外的任何单个字符。若要匹配 .,请使用 \。 [ ] 标记中括号表达式的开始。若要匹配这些字符,请使用 \[ 和 \]。? 零次或一次匹配前面的字符或子表达式,或指示“非贪心”限定符。若要匹配 ? 字符,请使用 \?。\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,字符 n 匹配字符 n。\n 匹配换行符。序列 \\ 匹配 \,序列 \( 匹配 (。/ 表示文本正则表达式的开始或结束。若要匹配 / 字符,请使用 \/。^ 匹配输入字符串开始处的位置,但在中括号表达式中使用的情况除外,在那种情况下它对字符集求反。若要匹配 ^ 字符本身,请使用 \^。{ } 标记限定符表达式的开始。若要匹配这些字符,请使用 \{ 和 \}。| 指出在两个项之间进行选择。若要匹配 | ,请使用 \|
bash转义字符表\a ASCII 响铃字符(也可以键入 \007) \d "Wed Sep 06" 格式的日期 \e ASCII 转义字符(也可以键入 \033) \h 主机名的第一部分(如 "mybox") \H 主机的全称(如 "mybox.mydomain.com") \j 在此 shell 中通过按 ^Z 挂起的进程数 \l 此 shell 的终端设备名(如 "ttyp4") \n 换行符 \r 回车符 \s shell 的名称(如 "bash") \t 24 小时制时间(如 "23:01:01") \T 12 小时制时间(如 "11:01:01") \@ 带有 am/pm 的 12 小时制时间 \u 用户名 \v bash 的版本(如 2.04) \V Bash 版本(包括补丁级别) \w 当前工作目录(如 "/home/drobbins") \W 当前工作目录的“基名 (basename)”(如 "drobbins") \! 当前命令在历史缓冲区中的位置 \# 命令编号(只要您键入内容,它就会在每次提示时累加) \$ 如果您不是超级用户 (root),则插入一个 "$";如果您是超级用户,则显示一个 "#" \xxx 插入一个用三位数 xxx(用零代替未使用的数字,如 "\007")表示的 ASCII 字符 \\ 反斜杠 \[ 这个序列应该出现在不移动光标的字符序列(如颜色转义序列)之前。它使 bash 能够正确计算自动换行。 \] 这个序列应该出现在非打印字符序列之后。reference:http://www.aslibra.com/blog/read.php/1559.htmhttp://hi.baidu.com/yacker/item/52af3ca4c94873d35bf191ea
- 转义字符引发的血案(hive、bash)
- 转义字符引发的血案(hive、bash)
- 一场由字符数组char szvalue[30]引发的“血案“
- ExecutorService引发的血案(一)结构
- ExecutorService引发的血案(三)ThreadPoolExecutor
- WSAPoll引发的一场血案(1)
- WSAPoll引发的一场血案(2)
- ActiveX引发的“血案”
- size_t引发的血案
- 一个 * 引发的血案
- gets引发的血案
- Print 引发的“血案”
- lease引发的血案
- 一个“-”引发的血案
- MD5引发的血案
- 一个"/"引发的血案
- wrap_content引发的血案
- merge_all引发的血案
- 2013年年会单口相声
- 基于android手机的备份与还原
- 由生产者/消费者问题看JAVA多线程
- 115网盘下载地址资源失效无法下载的解决办法(迅雷)
- 2013寒假SD高校ACM周赛3—Steps
- 转义字符引发的血案(hive、bash)
- Windows编程入门(1)
- SEC S3C2410X Test B/D 驱动
- VC2008安装boost库
- sendBroadcast翻译
- 标志FLAG_ACTIVITY_NEW_TASK的解释
- 【SDUT_ACM周赛3】Problem A——Steps
- public Intent setFlags (int flags) 解释
- 解决IE6从Nginx服务器下载图片不Cache的Bug