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

如何在bash中找到两个字符串之间的常用字符?

发布时间:2020-12-15 18:58:58 所属栏目:安全 来源:网络整理
导读:例如: s1="my_foo"s2="not_my_bar" 期望的结果将是my_o.我怎么在bash中这样做? 我的解决方案使用fold将字符串分成每行一个字符,排序列表,comm比较两个字符串,最后tr删除新行字符 comm -12 (fold -w1 $s1 | sort -u) (fold -w1 $s2 | sort -u) | tr -d 'n'
例如:
s1="my_foo"
s2="not_my_bar"

期望的结果将是my_o.我怎么在bash中这样做?

我的解决方案使用fold将字符串分成每行一个字符,排序列表,comm比较两个字符串,最后tr删除新行字符
comm -12 <(fold -w1 <<< $s1 | sort -u) <(fold -w1 <<< $s2 | sort -u) | tr -d 'n'

或者,这是一个纯Bash解决方案(它也维护字符的顺序).它迭代第一个字符串并检查第二个字符串中是否存在每个字符.

s="temp_foo_bar"
t="temp_bar"
i=0
while [ $i -ne ${#s} ]
do
    c=${s:$i:1}
    if [[ $result != *$c* && $t == *$c* ]]
    then
      result=$result$c
    fi
    ((i++))
done
echo $result

打印:temp_bar

(编辑:李大同)

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

    推荐文章
      热点阅读