拆分逗号分隔列表,排序和比较 - 输出差异 - KSH

时间:2015-05-13 11:27:33

标签: unix compare ksh string-comparison

我正在研究KSH中的一个问题,需要将两个逗号分隔的列表进行比较,然后输出差异。

示例输入1: 苹果,香蕉 示例输入2: 苹果,香蕉,猕猴桃

输出: 猕猴桃

我假设我需要将列表放入数组中,并通过循环将列表1中的每个字符串与列表2进行比较。

for fruit in $fruits
do
if [[ fruit[1] == fruit1[1] ]]
then
echo "fruit is the same"
else
echo "fruit is not in the list. difference found."
echo $fruit
fi

有谁知道我怎么能这样做?

由于

2 个答案:

答案 0 :(得分:2)

一种可能的解决方案可能是:

localhost> cat file1

苹果,香蕉,猕猴桃,苹果

localhost> cat file2

苹果,香蕉,宝石,马铃薯

最简单的解决方案是:

cat file1 | tr , '\n' | sort> file3的

cat file2 | tr , '\n' | sort> file4将

comm -3 file3 file4

<强>输出:

苹果

宝石

猕猴桃

马铃薯

答案 1 :(得分:2)

寻找两个列表的补充:

$ a="1,2,3,4,5"
$ b="2,3,4,5,6"
$ echo $a,$b | tr , "\n" | sort | uniq -u
1
6

或者相同,但是通过列表(例如,如果您需要不同的预处理):

$ sort  <(echo $a | tr , "\n") <(echo $b | tr , "\n") | uniq -u
1
6
相关问题