linux、awk、またはsedを使用してgen.gzファイルの内容を編集します。

linux、awk、またはsedを使用してgen.gzファイルの内容を編集します。

6000の列を含む遺伝データファイルがありますgen.gz。データは次のとおりです。

1 1:13380:C:A 13380 C A

2番目の列を次のように編集したいと思います。

1 1:13380 13380 C A

2列目から4文字を削除したいです。

入力はgen.gzファイルであり、出力が同じであることを望みます。

ベストアンサー1

フィールドが空白文字で区切られていると仮定すると、ファイルを解凍して修正用にインポートし、結果のawkデータを新しいファイル名に圧縮できます。これは、圧縮されていないデータをディスクに保存せずに単一のパイプラインで実行できます。作業が完了したら結果を確認し、正常に見える場合は元の結果を置き換えます。

gzip -d -c gen.gz |
awk '{ sub(":[^:]*:[^:]*$", "", $2); print }' |
gzip -c >new-gen.gz

# look at new-gen.gz, and then

mv new-gen.gz gen.gz   # only if you want to discard the original data!

このawkコードはさまざまな方法で実行できます。:提案したように、最後の4文字を削除するのではなく、2番目のフィールドから最後の2つの区切り文字列を削除することにしました。常に文字が1つしかない場合は、:[^:]*:[^:]*$正規表現を次のように記述できます:.:.$

圧縮ファイルのデータを変更しているので、ファイルをその場で実際に編集することはできません( のようにsed -i)。

おすすめ記事