cmd="awk -F, '{print $4}' /home/.../xxx.log|sort|uniq"
for i in $ipList;do
echo -e "\033[31m= $i = \033[0m";
ssh -o StrictHostKeyChecking=no rd@$i "$cmd" < /dev/null;
因为ssh "$cmd" 有层双引号,双引号会对$4进行解析,$4在上下文中不存在,导致结果不符合预期
fix方案
$ 符号进行转义
cmd="awk -F, '{print \$4}' /home/.../xxx.log|sort|uniq" #转义\
4。在上面的语法,无论是搜索模式,或行动是可选的,但不能同时。
5。如果
没有
给出搜索模式,然后
awk
要执行每一行输入给定的行动。
6。如果
没有
给出动作,打印,这是默认的操作与模式相匹配的所有行。 7。空出的任何行动括号什么都不做。它不会执行默认的打印操作。
8。中的每个行动的声明应该用分号分隔。让我们创建employee.txt文件,其中有
首先, 你需要先了解
awk
的工作原理:
1。
AWK
读取输入文件一次一行
原命令
ssh
[email protected] "ps -ef |grep /home/wwwroot/tomcat/YL_apache-tomcat-7.0.82 |grep -v grep | /bin/
awk
'{print $2}'"
### 执行后截取不到pid,
awk
字段
没
生效
。
原来
远程
执行
awk
,需要对$进行转移才可以使用。
ssh
[email protected]...
需要按照第二列大小排序命令:
for i in `
awk
-F ‘[ |]’ ‘{print NR,$2}’ mscto.txt|sort -rn -k2|
awk
‘{print $1}’`;
do
awk
‘NR==’$i’ {print}’ mscto.txt;
————————————
43 108|64
33 46|54
81 38|24
72 33|38
64 18|43
http://www.linux.gov.cn/
shell
/
awk
.htm1,
awk
是什么?为什么用
awk
?
awk
是一种样式扫描与处理工作,它几乎可以完成grep和sed所能完成的全部工作,同时,它还可以可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。
awk
所做的工作有些象数据库,但与数据库不同的是
关于
awk
命令的基础用法,请参考Linux
awk
命令。
awk
-F
awk
-F #-F相当于内置变量FS, 指定分割字符,fs是一个字符串或者是一个正则表达式,如-F:。
awk
命令之,分割符
awk
命令之;分割符
cut命令 cut [选项] 文件
-f 列号 ( --field 提取第几列 ) -d
分隔符
( --delimiter 按照指定
分隔符
分割列 ) vi user.txt ( 行间
分隔符
为制表符Tab,cut的默认分割符是制表符 ) 提取系统的用户名和uid:
cut -d ":" -f 1,3 /etc/passwd 与grep组合使用:
在
AWK
中使用正则表达式本文要说的不是正则表达式本身,而是如何将正则表达式有效地传递给
AWK
。对于
AWK
程序中的pattern,用"//"包围即可,比如mount |
awk
'/type (ext3|tmpfs)/ {print $1}'
分隔符
(field separator)也支持正则表达式,它在
awk
程序中是一个名为 FS 的变量,可以在命令行中通过 -F ...