Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单个命令中的多个awk打印_Awk - Fatal编程技术网

单个命令中的多个awk打印

单个命令中的多个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 |

这里是我们需要执行的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 '{ 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未定义结束部分中字段的值。