gpt4 book ai didi

linux - 如何在 printf 之后使用 uniq

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:25 26 4
gpt4 key购买 nike

我有很多文件需要用相同的前缀连接在一起。我有一个想法,但我不知道如何解决这个问题:

文件:

NAME1_C001_xxx.tsv
NAME1_C001_yyy.tsv
NAME2_C001_xxx.tsv
NAME2_C001_yyy.tsv

我只想打印 uniq 前缀 - NAME1 和 NAME2。前缀和后缀中的字符串长度各不相同,但总是在前缀之前 _C001

我的解决方案是:

fo i in *.tsv

do prexix=$(printf "%s\n" "${i%_C001*}")

cat $prefix_C001_xxx.tsv $prefix_C001_yyy.tsv > ${i%_C001*}.merged.tsv

done;

但是这个方案不是很好。每个前缀我都有两次。

感谢您的帮助。

已编辑:

感谢 anubhava 的一个解决方案:

fo i in $(printf "%s\n" *.tsv | awk -F '_C001' '!seen[$1]++{print $1}')

do

cat $prefix_C001_xxx.tsv $prefix_C001_yyy.tsv > ${i%_C001*}.merged.tsv

done;

最佳答案

你在这里根本不需要printf;它只是您已经在使用的参数替换的一个不必要的包装器。

for i in *.tsv
do prefix=${i%_C001*}
[[ -f $prefix.merged.tsv ]] && continue # Avoid doing the same prefix twice
cat "${prefix}"_* > "$prefix.merged.tsv"
done

关于linux - 如何在 printf 之后使用 uniq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40741522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com