我有一个文本文件,其中包含:
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吗?很高兴听到任何建议...
答案 0 :(得分:0)
删除所有 逗号,然后计算字符数。
commas () {
echo "$1" | tr -cd , | wc -m
}
然后您可以将文件的第一行和其他参数传递给函数:
IFS= read -r l < "$1/$2.txt"
if [[ $(commas "$l") -lt $(commas "$3") ]]; then
答案 1 :(得分:0)
要添加到 chepner 的答案中,grep
和wc
的组合也可以做到这一点:
commas () {
head -1 "$1" |grep -o , |wc -l
}
答案 2 :(得分:0)
当您只想比较逗号数时,可以使用
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