Shell:检查所有输出字符串是否相同

时间:2017-11-17 04:59:45

标签: string bash shell comparison

我有以下代码段

PR

现在我需要检查输出行是否具有相同的值或不同。 所以在上面的例子中它是不同的。 [disk1s1和disk1s4]。如何在shell中实现这一目标。

结果中我可能有两行或更多行。

2 个答案:

答案 0 :(得分:4)

尝试修改您的命令,如果您有任何重复的结果,输出将附加“相同”

$ mount | awk '/^\/dev/{print $1,a[$1]?"same":"";a[$1]=1}'
/dev/sdb1 
/dev/sdb3 
/dev/sda1 
/dev/sdb1 same
/dev/sdb3 same

简要说明,

  • 无需在命令中使用grep,因为awk可以执行grep可以做的任何事情。
  • /^\/dev/:搜索以'/ dev'
  • 开头的行
  • a[$1]?"same":""如果设置了[$ 1],则在$1后面打印“相同”,否则不执行任何操作
  • a[$1]=1:不要忘记在最后设置$1

答案 1 :(得分:1)

未经测试,但类似:

if (( $(mount | grep -o '^/dev[^ ]*' | sort -u | wc -l) > 1 ))
then
  echo different values
fi

grep中的-o选项和稍微修改的模式仅返回第一个字段。 sort的-u选项会丢弃重复项。