【问题标题】:how to do a character comparison in bash?如何在bash中进行字符比较?
【发布时间】:2021-11-24 16:55:01
【问题描述】:

假设我有一列显示2/2,我想比较分隔符的左侧(在这种情况下为/)是否与右侧匹配?有没有办法在 bash 中实现这一点?

一种可能的方法是使用IFS,但这需要将值存储在变量中,然后使用IF 语句进行比较。我正在尝试使用 oneliner 命令来实现这一点。

【问题讨论】:

  • 您必须将 something 存储在变量中。一些文本,一个文件名,一个列号,一些东西

标签: bash compare


【解决方案1】:

您可以使用 bash expansion operators 提取每个部分并直接比较它们。

var='2/2'
if [[ "${var%/*}" = "${var#*/}" ]]
then echo match
else echo no match
fi

${var%/*} 删除匹配通配符/* 的变量的末尾,因此它得到第一个数字。 ${var#*/} 删除与通配符*/ 匹配的变量的开头,因此它得到第二个数字。

【讨论】:

  • 谢谢你帮了我很多。
【解决方案2】:

虽然您正在寻找bash 解决方案,但awk 选项怎么样:

col="2/2"
echo "$col" | awk -F/ '{print $1==$2 ? "match" : "no match"}'
  • -F/ 选项将awk 的字段分隔符设置为/
  • 然后在/ 上拆分输入,并将awk 变量$1 分配给 左侧,而$2 分配到右侧。
  • 现在我们可以比较$1$2

【讨论】:

    猜你喜欢
    • 2011-01-15
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 2021-03-08
    • 2022-01-26
    • 1970-01-01
    • 2013-04-22
    相关资源
    最近更新 更多