$awk '{ gsub("\\N", "\n", $0) ; print $0 }'
输入:haha\Nxixi
输出:haha\
xixi
$awk '{ gsub{"\\N", "^",$0) ; print $0 }'
输入:hahaNNN
输出:haha^^^
只是把N替换掉了
$awk '{ gsub(/\\N/, "\n", $0) ; print $0 }'
输入:haha\Nxixi
输出:haha
xixi
这是想要的结果。
为什么两种方式会得到不一样的结果?
mawk中regular expression的问题
- nobrain
- 帖子: 808
- 注册时间: 2005-08-25 13:58
- 来自: ustc
- 联系:
mawk中regular expression的问题
爱喝真猪奶茶的夜鸣猪
- laborer
- 帖子: 1016
- 注册时间: 2005-10-25 11:15
- 联系:
\\首先是被bash解析为\,再放入字符串的,也就是说awk看到的命令是
然后awk再将"\N"解析为"N",自然就得到了第一种结果。后一种情况/\N/不是字符串,awk也不会去解析\N。所以解决的方法可以是将"\\N"改为"\\\\N"。体会一下下面这个例子就能明白了。
代码: 全选
{ gsub("\N", "\n", $0) ; print $0 }
代码: 全选
xshu@boxter:~$ echo "\n"
\n
xshu@boxter:~$ echo "\\n"
\n
xshu@boxter:~$ echo "\\\n"
\\n
xshu@boxter:~$ echo "\\\\n"
\\n
hreiser@oakland:~$ killall -9 wife
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser
- nobrain
- 帖子: 808
- 注册时间: 2005-08-25 13:58
- 来自: ustc
- 联系: