单个命令中的多个awk打印
这里是我们需要执行的2个命令,有两种方法可以在一行中执行它,单个命令中的多个awk打印,awk,Awk,这里是我们需要执行的2个命令,有两种方法可以在一行中执行它,或|。是否有其他方法通过awk命令执行它 下面是两次执行的命令,一个命令是否可以有多个awk print,如示例命令所示 isi_classic snapshot usage | tail -n 1 | awk '{printf "\t\t\tSnapshot USED %=%.1f%%\n", $4}' Snapshot USED =0.6% isi_classic snapshot usage | tail -n -1 |
代码>或|
。是否有其他方法通过awk
命令执行它
下面是两次执行的命令,一个命令是否可以有多个awk print
,如示例命令所示
isi_classic snapshot usage | tail -n 1 | awk '{printf "\t\t\tSnapshot USED %=%.1f%%\n", $4}'
Snapshot USED =0.6%
isi_classic snapshot usage | tail -n -1 | awk '{ print "\t\t\tSnapshot USED:" $1}'
Snapshot USED=3.2T
尝试的命令示例:
isi_classic snapshot usage | tail -n 1 | awk '{printf "\t\t\tSnapshot USED %:%.1f%%\n", $4}'; awk '{ print "\t\t\tSnapshot USED:" $1}'
Snapshot USED =0.6%
Snapshot USED=3.2T
您完全可以使用一行命令来执行此操作
isi_classic snapshot usage | awk -v OFS='\t\t\t' 'END{printf "%sSnapshot USED %=%.1f%%\n%sSnapshot USED:%s\n",OFS,$4,OFS,$1}'
简要说明
- 不需要使用
tail
,awk'END{}
也可以做同样的事情
- 您可以将
printf
和print
命令合并为一个命令
- 最好将
'\t\t\t'
替换为OFS
,以使命令更具可读性
如果我理解正确,您希望两个awk语句的输出在一行上相邻。由于您每次都向awk提供不同的输入,首先将每一行的结果存储在一个单独的变量中,然后将这两个变量相邻地打印出来如何?使用一个awk
语句和一个printf
,这将只在某些awk中生成您想要的输出,因为POSIX未定义结束部分中字段的值。