没有临时文件的两个 shell 列表之间的交集
Intersection between two shell lists without temp files
网上有很多关于我想要的结果的问题。
想象一下,您在 shell 脚本中有两个列表:
LIST_ONE="key1 key2 key3 key4"
LIST_TWO="key2 key3 key5"
我想要这两个列表的交集:
LIST_FIN="key2 key3"
我发现了一些事情要做,比如使用 comm
命令。但它总是使用文件,而我不能使用临时文件。
感谢您的建议。
使用进程替换:
grep -o -f <(echo "$LIST_TWO" | tr ' ' '\n') <<< "$LIST_ONE" | xargs
key2 key3
这样的事情怎么样:
$ LIST_ONE="key1 key2 key3 key4"
$ LIST_TWO="key2 key3 key5"
$ comm -12 <(tr ' ' '\n' <<< "${LIST_ONE}" | sort) <(tr ' ' '\n' <<< "${LIST_TWO}" | sort)
key2
key3
$
网上有很多关于我想要的结果的问题。 想象一下,您在 shell 脚本中有两个列表:
LIST_ONE="key1 key2 key3 key4"
LIST_TWO="key2 key3 key5"
我想要这两个列表的交集:
LIST_FIN="key2 key3"
我发现了一些事情要做,比如使用 comm
命令。但它总是使用文件,而我不能使用临时文件。
感谢您的建议。
使用进程替换:
grep -o -f <(echo "$LIST_TWO" | tr ' ' '\n') <<< "$LIST_ONE" | xargs
key2 key3
这样的事情怎么样:
$ LIST_ONE="key1 key2 key3 key4"
$ LIST_TWO="key2 key3 key5"
$ comm -12 <(tr ' ' '\n' <<< "${LIST_ONE}" | sort) <(tr ' ' '\n' <<< "${LIST_TWO}" | sort)
key2
key3
$