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 – If条件下不区分大小写的比较 - 代码日志 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |