Chinaunix

标题: ssh远程执行awk时的匹配问题 [打印本页]

作者: registcn    时间: 2014-01-25 10:39
标题: ssh远程执行awk时的匹配问题
1) echo $(ssh testhost "echo haha lala |awk '\$2~/lala/{print \$2}'&& echo ok")
lala ok
2) echo $(ssh testhost "echo haha baba |awk '\$2 !~/lala/{print \$2}'&& echo ok")            
-bash: !~/lala/{print: event not found
3) echo `ssh testhost "echo haha lala |awk '\$2 ~/lala/{print \$0}'&& echo ok"`   
awk: cmd. line:1:  ~/lala/{print -bash}
awk: cmd. line:1:  ^ syntax error

见上述现象描述,测试发现,$()中ssh远程时用awk的~可以,!~不可以,而若用反引号``,则连~都不可以了。
求两个说法:
2)中怎么摘$()中用!~
3)  中怎么用~

################之前发过类似帖子,无下文了,特批新帖#####################
作者: bikkuri    时间: 2014-01-25 12:45
加\转义

回复 1# registcn


   
作者: registcn    时间: 2014-01-25 15:23
转义试过的,2)和3)都提示awk: cmd. line:1:  ^ backslash not last character on line

回复 2# bikkuri


   
作者: 变形金刚四    时间: 2014-01-26 23:07
帮顶                           
作者: jason680    时间: 2014-01-27 11:43
回复 1# registcn

$ echo $(ssh localhost "echo haha lala | awk '\$2!~/lala/{print}' && echo ok ")
bash: !~/lala/{print}': event not found

$ echo $(ssh localhost 'echo haha lala | awk "!\$2~/lala/{print}" && echo ok ')
.... password:
ok

作者: registcn    时间: 2014-01-27 12:44
楼主不想看到这种变通的方法,其实之前那个帖子就是这么解决的。还是想看下,如果就按双引号ssh,应该怎么写
回复 5# jason680


   
作者: jason680    时间: 2014-01-27 14:50
本帖最后由 jason680 于 2014-01-27 15:25 编辑

回复 6# registcn

All roads lead to Rome  

$ echo $(ssh localhost "echo haha lala | awk '$2!~/lala/{print}' && echo ok ")
bash: !~/lala/{print}': event not found
$ echo $(ssh localhost "echo haha lala | awk 'match(\$2,/lala/)==1{print}' && echo ok ")
haha lala ok

$ echo $(ssh localhost "echo haha lala | awk 'match(\$2,/lala/)<1{print}' && echo ok ")
ok







欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2