2

Wiggle ファイル内の特定の染色体を返すために pcgrep で使用する単純な正規表現を作成しました (以下を参照)。

 pcregrep -M '^fixedStep chrom=2.*\n[0-9\n]*' input.txt

入力ウィッグ

fixedStep chrom=1 start=14154 step=1
1
1
1
1
1
fixedStep chrom=2 start=14154 step=1
1
1
3
10
120
14
5
9
fixedStep chrom=2 start=20145 step=1
1
1
11
1
1
fixedStep chrom=2 start=30535 step=1
3
24
11
fixedStep chrom=3 start=14154 step=1
1
1
1
1
1

出力は次のとおりです。

fixedStep chrom=2 start=14154 step=1
1
1
3
10
120
14
5
9
fixedStep chrom=2 start=30124 step=1
fixedStep chrom=2 start=50345 step=1
4
23
90
fixedStep chrom=3 start=14154 step=1

しかし、私が取得したいのは:

fixedStep chrom=2 start=14154 step=1
1
1
3
10
120
14
5
9
fixedStep chrom=2 start=20145 step=1
1
1
11
1
1
fixedStep chrom=2 start=30535 step=1
3
24
11

より具体的には、一致するファイル内の各エントリを見つけたい

fixedStep chrom=2 start=ANY step=1
1
2
3
4

他のすべての染色体を保持したまま、それを削除します。

編集:

検索の問題を部分的に解決しました。使うことができます

pcregrep -M '^fixed.*chrom=2.*(\n[0-9]+)*' input.txt

正しい出力を取得します。しかし、input.txt から第 2 染色体を効率的に削除する方法をまだ見つけていません。

4

1 に答える 1

3

使えますawkか?そうであれば、これはうまくいくはずです:

awk '/chrom=2/{p=1}/chrom=[^2]/{p=0}p' input
于 2013-06-28T00:09:33.863 に答える