【问题标题】:Compare two lists of strings in bash比较 bash 中的两个字符串列表
【发布时间】:2020-03-30 14:32:44
【问题描述】:

我在 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 正在尝试将输出用作文件位置,而不是内容,但我不知道如何修复它。

【问题讨论】:

    标签: bash shell comm


    【解决方案1】:

    因为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")
    

    【讨论】:

      猜你喜欢
      • 2015-12-07
      • 2021-10-29
      • 2019-04-07
      • 1970-01-01
      • 2019-03-14
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多