首页 > 解决方案 > 如何将bash参数中的逗号数与文本文件中的逗号数进行比较

问题描述

我有一个文本文件,其中包含:

1,2,3

我有一个带有参数的脚本插入,我想将该参数中的逗号数与文本文件中的数字进行比较。

我正在尝试做类似的事情:

if [ ((grep -c "," "$1/$2.txt")) -gt ((grep -c "," "$3")) ] | [ ((grep -c "," "$1/$2.txt")) -lt ((grep -c "," "$3")) ]; 
      then echo "yes"

$1/$2.txt 是文本文件的目录

我知道我做错了,但不知道如何获得逗号的数量,因为 -c 返回行数。而且我不确定一半的语法。我应该改用 sed 吗?很高兴听到任何建议......

标签: bashshellgrep

解决方案


当您只想比较逗号的数量时,您可以使用

if [ "$(tr -cd "," < "$1"/"$2")" = "$(tr -cd , < "$3")" ]; then
   echo yes
fi 

编辑:我以为$3是另一个文件。当它是一个字符串时,你可以使用

if [ "$(tr -cd "," < "$1"/"$2")" = "$(tr -cd , <<< "$3")" ]; then
   echo yes
fi 

推荐阅读