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

Split comma separated list, sort and compare - output the difference - KSH

我正在处理 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

有人知道我该怎么做吗?

谢谢

一个可能的解决方案是:

本地主机 > cat file1

苹果、香蕉、猕猴桃、苹果

本地主机 > cat file2

苹果、香蕉、珠宝、土豆

最简单的解决方案是:

cat file1 | tr , '\n' | sort > 文件 3

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

comm -3 file3 file4

输出:

苹果

宝石

猕猴桃

土豆

寻找两个列表的补充:

$ 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