加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – If条件下不区分大小写的比较

发布时间:2020-12-15 21:18:06 所属栏目:安全 来源:网络整理
导读:我有这个csv文件,我需要计算满足行条目在特定年份范围之间并且artist_name匹配name参数的条件的行数.但字符串匹配应该不区分大小写.我如何在if循环中实现它.. 我是初学者,所以请耐心等待 #!/bin/bashfile="$1"artist="$2" from_year="$(($3-1))"to_year="$((
我有这个csv文件,我需要计算满足行条目在特定年份范围之间并且artist_name匹配name参数的条件的行数.但字符串匹配应该不区分大小写.我如何在if循环中实现它..

我是初学者,所以请耐心等待

#!/bin/bash

file="$1"
artist="$2" 
from_year="$(($3-1))"
to_year="$(($4+1))"
count=0

while IFS="," read arr1 arr2 arr3 arr4 arr5 arr6 arr7 arr8 arr9 arr10 arr11 ; do

if [[ $arr11 -gt $from_year ]] && [[ $arr11 -lt $to_year ]] && [[ $arr7  =~ $artist ]]; then
count=$((count+1))
fi

done < "$file"
echo $count

$arr7 =?$艺术家部分是我需要进行修改的地方

解决方法

bash case-transformations(${var,}和${var ^^})是在bash版本4中引入的(前一段时间).但是,如果你使用的是Mac OS X,那么你很可能有bash v3.2这本身并没有实现案例转换.

在这种情况下,您可以使用tr进行低效率的比较,并使用tr进行更多的输入:

if [[ $(tr "[:upper:]" "[:lower:]" <<<"$arr7") = $(tr "[:upper:]" "[:lower:]" <<<"$artist") ]]; then
  # ...
fi

顺便说一句,=?做正则表达式比较,而不是字符串比较.你几乎肯定想要=.另外,您可以使用算术复合命令代替[[$x -lt $y]] :((x )).>

相关文章

  • bash中不区分大小写的字符串比较
  • JavaScript不区分大小写的字符串比较
  • 不区分大小写的NSString比较
  • F#不区分大小写的字符串比较
  • c - stl find_if和不区分大小写的字符串比较
  • java - JPA 2 Criteria API不区分大小写的情况下不区分大小写的情况
  • c# - 如何比较不区分大小写和不区分重音的字符串
  • asp.net-mvc-3 - MVC 3 - 比较属性 - 在客户端执行不区分大小写的比较
点击查看更多相关文章

转载注明原文:bash – If条件下不区分大小写的比较 - 代码日志

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读