首页 文章

使用zcat和sed或awk编辑压缩的.gz文本文件

提问于
浏览
5

我正在尝试编辑压缩的fastq.gz文本文件,删除第2,6,10,14行的前六个字符...我现在有两种不同的方法,使用awk或sed,但这些只是如果文件解压缩似乎工作 . 我想编辑文件而不解压缩它们并尝试以下代码而不让它工作 . 谢谢 .

使用sed:

zcat /dir/* | sed -i~ '2~4s/^.\{6\}//'

使用awk:

zcat /dir/* | awk 'NR%4==2 {gsub(/^....../,"")} 1'

1 回答

  • 16

    您无法绕过压缩,但您可以以自动方式将解压缩/编辑/重新压缩链接在一起:

    for f in /dir/*; do
      cp "$f" "$f~" &&   
      gzip -cd "$f~" | sed '2~4s/^.\{6\}//' | gzip > "$f"
    done
    

    如果您对操作非常有信心,可以通过将 rm "$f~" 添加到循环体的末尾来删除备份文件 .

相关问题