在AWK中输出特殊字符-单引号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在AWK中输出特殊字符-单引号相关的知识,希望对你有一定的参考价值。

参考技术A 在AWK中输出特殊字符-单引号在AWK中输出单引号实现方式比较特殊:[html]>
uname
linux
对于输出字符串使用到单引号:单引号-双引号-单引号-转义单引号-单引号-字符串-单引号-转义单引号-单引号-双引号-单引号(下划线部分为输出单引号,相同颜色符号对应)[html]>
echo
aaa
|
awk
'print
select
*
from
A
where
name='/''TOM'/'''
select
*
from
A
where
name='TOM'
对于输出域变量使用到单引号:单引号-双引号-单引号-转义单引号-单引号-双引号-域变量-双引号-单引号-转义单引号-单引号-双引号-单引号(下划线部分为输出单引号,相同颜色符号对应)[html]>
echo
TOM
|
awk
'print
select
*
from
A
where
name='/''$1'/'''
select
*
from
A
where
name='TOM'
对于输出环境变量使用到单引号:单引号-双引号-单引号-转义单引号-单引号-单引号-环境变量-单引号-单引号-转义单引号-单引号-双引号-单引号(下划线部分为输出单引号,相同颜色符号对应)[html]>
key=TOM;
echo
aaa
|
awk
'print
select
*
from
A
where
name='$key''
select
*
from
A
where
name=TOM
>
key=TOM;
echo
aaa
|
awk
'print
select
*
from
A
where
name='/'''$key''/'''
select
*
from
A
where
name='TOM'
其它特殊字符:$`(美元符、反引号)只需在双引号内即可,/(反斜杠)需要在前面加上反斜杠[html]echo
aaa
|
awk
'print
$//`'
$/`

shell中的单引号和双引号的区别

对于常规的字符串定义变量值应添加双引号,并且等号后不能 有空格,需要强引用的,则需要单引号,需要命令引用的使用反引号。

 

单引号:所见即所得,即输出时会将单引号内的所有内容都原样输出,或者描述为单引号里面看到的什么就输出什么,这成为强引用。

双引号:输出双引号的所有内容;如果内容中有命令(要反引)、变量、特殊转义,会先把变量、命令、转义字符解析出结果,然后在输出最终内容,这称为弱引。

反引号:一般用于命令,执行的时候命令会被执行,相当于$(),赋值和输出都要用反引号引起来。

[root@localhost ~]# time=date
[root@localhost ~]# echo $time
date
[root@localhost ~]# time=`date`
[root@localhost ~]# echo $time
2019年 08月 01日 星期四 08:14:11 CST
[root@localhost ~]# time="`date`"
[root@localhost ~]# echo $time
2019年 08月 01日 星期四 08:21:15 CST
[root@localhost ~]# time=`date`
[root@localhost ~]# echo $time
`date`
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# echo `$PATH`
-bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin: 没有那个文件或目录

[root@localhost ~]# echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# echo $PATH
$PATH
[root@localhost ~]# time="现在是北京时间:`date`"
[root@localhost ~]# echo $time
现在是北京时间:2019年 08月 01日 星期四 08:24:25 CST
[root@localhost ~]# time=现在是北京时间:`date`
[root@localhost ~]# echo $time
现在是北京时间:`date`
[root@localhost ~]# time="现在是北京时间:\b`date`"
[root@localhost ~]# echo $time
现在是北京时间:\b2019年 08月 01日 星期四 08:25:19 CST
[root@localhost ~]# time=现在是北京时间:`date`
[root@localhost ~]# echo $time
现在是北京时间:`date`
其实在shell中 echo的参数e能够解析转义字符,在单引或者双引的情况下都能够解析。
-e 启用下列反斜杠转义的解释

[root@localhost ~]# time="我们都是\n好孩子" [root@localhost ~]# echo -e $time 我们都是 好孩子 [root@localhost ~]# time=我们都是\n好孩子 [root@localhost ~]# echo -e $time 我们都是 好孩子

不用“”在shell解释器中能否转义,需要进一步验证,建议代码中使用“”定义转义符。

以上是关于在AWK中输出特殊字符-单引号的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 在字符串中输入单引号或特殊字符

如何设置awk识别双引号为一个字符

单引号是不是将反斜杠视为 bash 脚本中的特殊字符?

Shell里的特殊符号

SQL 中单引号 和一些特殊字符的处理

Linux中的特殊字符