如何获得两个变量的差异

时间:2010-07-06 08:53:12

标签: scripting shell

我是shell脚本的新手。

我想知道有没有办法让两个字符串或两个变量的值有所不同。

有两个变量:

value1 = "alok"  
value2 = "kumar alok"

所以我想得到一个结果

result = value1~value2

我的预期结果是

result="kumar"

有什么方法可以做到吗?

有人可以帮助我,或者以可行的方式给我一些建议......

由于

Alok.Kr。

3 个答案:

答案 0 :(得分:1)

可能你需要看看 this

答案 1 :(得分:1)

正如Lasse V.Karlsen所说,这在很大程度上取决于你想在不同情况下得到什么,但你可以尝试以下方法:

result=`comm -3 <(for i in $value1; do echo $i; done | sort) \
                <(for i in $value2; do echo $i; done | sort)`

这会为您提供value1value2中的所有字词,但不会同时显示两者。将-3更改为-12以获取value2中不在value1中的所有字词(即仅在value1中遗漏任何字词。)

例如:

value1="alok"
value2="kumar alok"
result=`comm -3 <(for i in $value1; do echo $i; done | sort) <(for i in $value2;  do echo $i; done | sort)`
echo $result

打印

kumar

答案 2 :(得分:1)

这是一个使用awk的简单方法

value1="alok"
value2="kumar alok"
awk -v v1="$value1" -v v2="$value2" 'BEGIN{
  if(length(v2) >= length(v1)){
    sub(v1,"",v2)
    print v2
  }
}'

$ ./shell.sh
kumar