比较 bash 中的两个字符串列表
Compare two lists of strings in bash
我在 bash 中有两个日期列表,我想找出它们之间的区别。尝试使用 comm,但我不知道如何比较两个存储的字符串列表(与命令输出或文件相对)。
有点像这样:
list1=$(seq 3 | xargs -I {} gdate -d "{} days ago" +%Y-%m-%d)
list2=$(seq 7 | xargs -I {} gdate -d "{} days ago" +%Y-%m-%d)
comm -1 -3 <"$list1" <"$list2"
# 2020-03-29
# 2020-03-28
# 2020-03-27: No such file or directory
这会产生所需的输出:
comm -1 -3 <(seq 3 | xargs -I {} gdate -d "{} days ago" +%Y-%m-%d) <(seq 7 | xargs -I {} gdate -d "{} days ago" +%Y-%m-%d)
# 2020-03-26
# 2020-03-25
# 2020-03-24
# 2020-03-23
显然 comm 试图将输出用作文件位置,而不是内容,但我不知道如何修复它。
由于 comm
需要两个文件,因此需要的是:
list1="$(seq 3 | xargs -I {} gdate -d "{} days ago" +%Y-%m-%d)"
list2="$(seq 7 | xargs -I {} gdate -d "{} days ago" +%Y-%m-%d)"
comm -1 -3 <(printf "%s\n" "$list1") <(printf "%s\n" "$list2")
我在 bash 中有两个日期列表,我想找出它们之间的区别。尝试使用 comm,但我不知道如何比较两个存储的字符串列表(与命令输出或文件相对)。
有点像这样:
list1=$(seq 3 | xargs -I {} gdate -d "{} days ago" +%Y-%m-%d)
list2=$(seq 7 | xargs -I {} gdate -d "{} days ago" +%Y-%m-%d)
comm -1 -3 <"$list1" <"$list2"
# 2020-03-29
# 2020-03-28
# 2020-03-27: No such file or directory
这会产生所需的输出:
comm -1 -3 <(seq 3 | xargs -I {} gdate -d "{} days ago" +%Y-%m-%d) <(seq 7 | xargs -I {} gdate -d "{} days ago" +%Y-%m-%d)
# 2020-03-26
# 2020-03-25
# 2020-03-24
# 2020-03-23
显然 comm 试图将输出用作文件位置,而不是内容,但我不知道如何修复它。
由于 comm
需要两个文件,因此需要的是:
list1="$(seq 3 | xargs -I {} gdate -d "{} days ago" +%Y-%m-%d)"
list2="$(seq 7 | xargs -I {} gdate -d "{} days ago" +%Y-%m-%d)"
comm -1 -3 <(printf "%s\n" "$list1") <(printf "%s\n" "$list2")