0

このテキストファイルを次から操作しようとしています:

>hg19_ct_UserTrack_3545_MACS_peak_2 range=chr1:777590-777790 5'pad=0 3'pad=0 strand=+ repeatMasking=none
TCCACCCACCGAAGTTGTTTGGTCCCAATCTGCAAAATCAGTTAAACGTC
TTCCTGCCTGGCAGCAGATCAAAGGGTGAGGGGTCTGGGACAGACAGAGA
CGGCTAGAGAATGGATGGTGAAGTGCTCAGAGGCCCTGTGGGCTATCCCA

>MACS_peak_2_range=chr1:777590-777790 5'pad=0 3'pad=0 strand=+ repeatMasking=none
TCCACCCACCGAAGTTGTTTGGTCCCAATCTGCAAAATCAGTTAAACGTC
TTCCTGCCTGGCAGCAGATCAAAGGGTGAGGGGTCTGGGACAGACAGAGA
CGGCTAGAGAATGGATGGTGAAGTGCTCAGAGGCCCTGTGGGCTATCCCA

sed と vim を使用して取得しましたが、スペースの組み合わせや最初の行に必要な正確な情報を取得できません (プログラムはそれなしでは機能しません)。

ありがとうハリエット

4

3 に答える 3

1

MACS_peak_2固定文字列の場合:

sed 's/>.*MACS/>MACS/; s/ /_/' file

仕事をするでしょう:

kent$  echo ">hg19_ct_UserTrack_3545_MACS_peak_2 range=chr1:777590-777790 5'pad=0 3'pad=0 strand=+ repeatMasking=none
TCCACCCACCGAAGTTGTTTGGTCCCAATCTGCAAAATCAGTTAAACGTC
TTCCTGCCTGGCAGCAGATCAAAGGGTGAGGGGTCTGGGACAGACAGAGA
CGGCTAGAGAATGGATGGTGAAGTGCTCAGAGGCCCTGTGGGCTATCCCA"|sed 's/>.*MACS/>MACS/; s/ /_/'
>MACS_peak_2_range=chr1:777590-777790 5'pad=0 3'pad=0 strand=+ repeatMasking=none
TCCACCCACCGAAGTTGTTTGGTCCCAATCTGCAAAATCAGTTAAACGTC
TTCCTGCCTGGCAGCAGATCAAAGGGTGAGGGGTCTGGGACAGACAGAGA
CGGCTAGAGAATGGATGGTGAAGTGCTCAGAGGCCCTGTGGGCTATCCCA

vimで実行したい場合:

:g/^>hg/s/hg.*MAC/MAC/|s/ /_/

この行は で始まるすべての行を置き換えます>hg。試してみてください。

于 2013-03-04T10:36:41.197 に答える
0

以下はインプレース置換を行います。コマンドを実行した後、ファイルが変更されます。

perl -pe 's/^\>.*?(MACS_peak.*)/>$1/g' your_file

以下のテストを参照してください。

> cat temp
>hg19_ct_UserTrack_3545_MACS_peak_2 range=chr1:777590-777790 5'pad=0 3'pad=0 strand=+ repeatMasking=none
TCCACCCACCGAAGTTGTTTGGTCCCAATCTGCAAAATCAGTTAAACGTC
TTCCTGCCTGGCAGCAGATCAAAGGGTGAGGGGTCTGGGACAGACAGAGA
CGGCTAGAGAATGGATGGTGAAGTGCTCAGAGGCCCTGTGGGCTATCCCA
> 
> 
> 
> 
> perl -pe 's/^\>.*?(MACS_peak.*)/>$1/g' temp
>MACS_peak_2 range=chr1:777590-777790 5'pad=0 3'pad=0 strand=+ repeatMasking=none
TCCACCCACCGAAGTTGTTTGGTCCCAATCTGCAAAATCAGTTAAACGTC
TTCCTGCCTGGCAGCAGATCAAAGGGTGAGGGGTCTGGGACAGACAGAGA
CGGCTAGAGAATGGATGGTGAAGTGCTCAGAGGCCCTGTGGGCTATCCCA
> 
> 
> 
> perl -pi -e 's/^\>.*?(MACS_peak.*)/>$1/g' temp
> 
> 
> 
> cat temp
>MACS_peak_2 range=chr1:777590-777790 5'pad=0 3'pad=0 strand=+ repeatMasking=none
TCCACCCACCGAAGTTGTTTGGTCCCAATCTGCAAAATCAGTTAAACGTC
TTCCTGCCTGGCAGCAGATCAAAGGGTGAGGGGTCTGGGACAGACAGAGA
CGGCTAGAGAATGGATGGTGAAGTGCTCAGAGGCCCTGTGGGCTATCCCA
> 
于 2013-03-04T10:42:36.820 に答える
0

awk の使用 (Kent が sed ソリューションを提供したため)

awk '/^>/sub(/hg19_ct_UserTrack_3545_/, "")' input

最初のスペースをアンダースコアに変更するには、別のサブを追加します。

awk '/^>/sub(/hg19_ct_UserTrack_3545_/, "");sub(/ /, "_")' input

sed は、おそらくこの問題に対するより良い解決策です。

于 2013-03-04T10:44:39.600 に答える