【问题标题】:echo 3 statements based wc -l count number returned in outputecho 3 statements based wc -l count number 在输出中返回
【发布时间】:2020-04-11 10:40:44
【问题描述】:

团队,我的以下命令运行良好,但我正在对其进行增强以获得如下所示的结果

我的目标是报告计数和显示语句。

我要满足三个条件

1 - 如果结果 = 0 未找到挂载

2 - 如果结果 = 1-64,则在 64 下找到挂载

3 - 如果结果 = 64+,则发现高于 64 的挂载

如果计数为0我想输出:

0 mounts found on this hostname

如果找到 1-64 个挂载,那么我想说找到的任何数量

x mounts found on hostname.

如果发现超过 64 个坐骑,那么我想说

x mounts found on hostname that are more than 64
mount | grep csi | grep -e /dev/sd | wc -l && echo "mounts found on $HOSTNAME" 

我正在尝试学习如何将返回的计数与 64 进行比较并相应地替换语句。对于所有这些,我需要一个单行 shell 命令,而不是多个,因为我需要将它放入 ansible shell 模块中。

样本输出:

mount | grep csi
tmpfs on /var/lib/kubelet/pods/abaa868f-2109-11ea-a1f8-ac1f6b5995dc/volumes/kubernetes.io~secret/csi-nodeplugin-token-type tmpfs (rw,relatime)
/host/dev/sdc on /var/lib/kubelet/pods/11ea-a1f8-ac1f6b5995dc/volumes/kubernetes.io~csi/ea6728b2-08d0-5fb7-b93a-5f63e49f770c/mount type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048,fsc,readahead=4096)
mount | grep csi | grep /dev/sd
/host/dev/sdc on /var/lib/kubelet/pods/11ea-a1f8-ac1f6b5995dc/volumes/kubernetes.io~csi/b93a-5f63e49f770c/mount type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048,fsc,readahead=4096)

任何提示为什么这在下面不起作用?

尝试过的解决方案:使用 awk 和比较运算符

mount | grep -Ec '/dev/sd.*\<csi' | awk '$0 = 0 { printf "No mounts found", $0,"TRUE" ; } ($0 > 0 && $0 <= 64)  { print "Mounts are less than 64", $0 ;} $0 > 64  { print "Mounts are more than 64", $0 ;}'

输出:

node1

预期:

node1 No mounts found

【问题讨论】:

  • 01-64 的输出消息基本相同
  • 为什么?我想要 0 和任何

标签: shell awk xargs


【解决方案1】:

使用扩展和优化的管道:

mount | grep -Ec '/dev/sd.*\<csi' \
| awk '{ print $0,"mounts found on hostname"($0>64? " that are more than 64." : ".") }'

grep-c选项——抑制正常输出;而是打印匹配行数

符号\&lt;\&gt;分别匹配单词开头和结尾的空字符串。

【讨论】:

  • 执行时我没有得到任何输出并且它始终为 0 那么这种模式在您的解决方案中是否正确?示例:我为mount | grep csi | grep /dev/sd 获得了一个坐骑,但是当我使用您的坐骑时,我一无所获mount | grep -Ec '/dev/sd.* csi'
  • @AhmFM 然后csi/dev/sd 之前或之前没有空格。如果在您的问题中您显示了您想要解析的 mount 的输出,那么它将有助于您编写一个工具来解析该输出。
  • 哦,我的错:现在添加了输出。请检查
  • 完美,非常感谢。作品。你能解释一下上面的
  • @AhmFM,看我的注释
猜你喜欢
  • 1970-01-01
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多