sed
を使用してファイルを編集していて、問題を見つけました。うまくいけば、sedの達人がこれを解決できるはずです。sedで構造化されていないファイルを編集する
私は、出力は次のようになり、次のコマンド
sed 's/.*##source_.*/\#\#INFO=\<ID=P_ID\,Number=1\,Type=String\,Description=\"Person Identifier\"\>\n&/' infile > outfile
を使用してファイルに行を挿入した
##INFO=<ID=EX_TARGET,Number=0,Type=Flag,Description="indicates whether a variant is within the exon pull down target boundaries">
##INFO=<ID=MULTI_ALLELIC,Number=0,Type=Flag,Description="indicates whether a site is multi-allelic">
##source_20160901.1=vcf-subset(r940) -f -c HG02291 /net/isilonP/public/rw/ensembl/1000genomes/release-17/tmp/slicer/1.1-1000000.ALL.chr1.phase3_shapeit2_mvncall_integrated_v5a.20130502.genotypes.vcf.gz
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT HG02291
1 10177 rs367896724 A AC 100 PASS AA=1 GT 1|0
1 10235 rs540431307 T TA 100 PASS XX=5 GT 0|0
1 10352 rs555500075 T TA 100 PASS JJ=7 GT 0|1
以下のようになります。非構造化/部分的に構造化されたファイルを、持っています
##INFO=<ID=EX_TARGET,Number=0,Type=Flag,Description="indicates whether a variant is within the exon pull down target boundaries">
##INFO=<ID=MULTI_ALLELIC,Number=0,Type=Flag,Description="indicates whether a site is multi-allelic">
##INFO=<ID=P_ID,Number=1,Type=String,Description="Patient Identifier">
##source_20160901.1=vcf-subset(r940) -f -c HG02291 /net/isilonP/public/rw/ensembl/1000genomes/release-17/tmp/slicer/1.1-1000000.ALL.chr1.phase3_shapeit2_mvncall_integrated_v5a.20130502.genotypes.vcf.gz
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT HG02291
1 10177 rs367896724 A AC 100 PASS AA=1 GT 1|0
1 10235 rs540431307 T TA 100 PASS XX=5 GT 0|0
1 10352 rs555500075 T TA 100 PASS JJ=7 GT 0|1
nex私は、これまでのところ
##INFO=<ID=EX_TARGET,Number=0,Type=Flag,Description="indicates whether a variant is within the exon pull down target boundaries">
##INFO=<ID=MULTI_ALLELIC,Number=0,Type=Flag,Description="indicates whether a site is multi-allelic">
##INFO=<ID=P_ID,Number=1,Type=String,Description="Patient Identifier">
##source_20160901.1=vcf-subset(r940) -f -c HG02291 /net/isilonP/public/rw/ensembl/1000genomes/release-17/tmp/slicer/1.1-1000000.ALL.chr1.phase3_shapeit2_mvncall_integrated_v5a.20130502.genotypes.vcf.gz
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT HG02291
1 10177 rs367896724 A AC 100 PASS AA=1;P_ID=12345 GT 1|0
1 10235 rs540431307 T TA 100 PASS XX=5;P_ID=12345 GT 0|0
1 10352 rs555500075 T TA 100 PASS JJ=7;P_ID=12345 GT 0|1
- 私がやりたいトンの事はJJ=7
出力がどのように見えるべきで、入力として上記のファイルを取り、AA=1
である列8、XX=5
に;P_ID=12345
を追加し、あります列8を選択することができましたが、情報を追加した後に更新された行をファイルに戻す方法がわかりません。
これは私が列8を選択しています方法です -
sed -re '{s/^(\S+\s+){7}(\S+).*$/\2/;p}'
をいずれかplsは私はこのパズルを解決するのに役立つだろうか?
ありがとうございます! /tmp/so5.txt
があなたの入力ファイルです
のPrashant
GNU sedのオプション '-i'を見てください。 – Cyrus
#sも
ありがとう、エド。私はこれに非常に新しいですが、私はsed/awkは非常に強力な編集者だと思うし、それらを学びたいと思います。現在、私はHadoop/Sparkのような並列処理技術に力を入れています。 awk + GNU Parallelの学習リソースはありますか? – PRP