拆分逗号分隔列表,排序和比较 - 输出差异 - 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
我正在处理 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