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

The*_*man 7 bash awk sed

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

使用sed:

zcat /dir/* | sed -i~ '2~4s/^.\{6\}//'
Run Code Online (Sandbox Code Playgroud)

使用awk:

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

Mar*_*eed 21

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

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

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