如何在带有bash/sed/awk的文件夹中的每个GZ上运行REGEXP子



我在一个文件夹中有一堆gzzpiped文件,其中每个文件的每行都是表单:

thing, thing2, something, thing4, other_thing, etc...

我要做的就是用标签替换每条文件中每一行的前两个逗号,以便每行看起来像:

thingt thing2t something, thing4, other_thing, etc...

有很多这些文件,所以我只是在寻找运行这个巨大替代品的最快,最无痛的方式。最后,我想将所有相同的文件都具有相同的文件名和一个替换的所有相同的文件。想法?

未测试:

#!/bin/bash
[[ -d $1 ]] || exit 1
for gz in "$1"/*.gz ; do
    zcat "$gz" | sed 's/,/t/;s/,/t/' > "$gz".tmp
    gzip "$gz".tmp
    mv "$gz".tmp.gz "$gz"
done

您可以使用gnu find和gnu并行执行此操作:

find . -maxdepth 1 -type f -print0 | parallel -0 
  gzip -dc {} | sed "s/,/$'t'/; s/,/$'t'/" | gzip > {}.tmp ; mv {}.tmp {}

--dry-run平行运行以查看会发生什么。

相关内容

  • 没有找到相关文章

最新更新