Bash中如何忽略单词顺序比较两个字符串内容是否一致
Bash忽略单词顺序比较字符串的实现
核心逻辑是将两个变量的单词拆分、排序后再对比,即可消除顺序差异的影响。
完整实现代码
#!/bin/bash # 示例变量 VAR1="eu-endpoint-2021.09.20 prod-store-2021.09.20 service-trace-2021.09.20" VAR2="prod-store-2021.09.20 eu-endpoint-2021.09.20 service-trace-2021.09.20" # 对两个变量的单词进行排序后生成对比字符串 sorted1=$(echo "$VAR1" | xargs -n1 | sort | xargs) sorted2=$(echo "$VAR2" | xargs -n1 | sort | xargs) # 对比逻辑 if [ "$sorted1" = "$sorted2" ]; then # 单词集合一致时执行的逻辑 echo "两个变量的单词集合完全一致" # 此处添加你需要执行的操作 else # 不一致时执行的逻辑 echo "两个变量的单词集合存在差异" # 此处添加你需要执行的其他操作 fi
命令说明
xargs -n1:将输入的字符串按空格拆分,每行输出一个单词sort:对拆分后的单词按字典序排序,消除顺序差异xargs:将排序后的多行单词重新拼接为单行字符串
特殊场景适配
如果需要忽略重复单词(即只要单词存在即可,不要求出现次数一致),在sort命令后添加-u参数去重即可:
sorted1=$(echo "$VAR1" | xargs -n1 | sort -u | xargs) sorted2=$(echo "$VAR2" | xargs -n1 | sort -u | xargs)
内容的提问来源于stack exchange,提问作者noze_potato
相关产品推荐
相关产品推荐

