我正在研究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
有谁知道我怎么能这样做?
由于
答案 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