我正在尝试操作此文本文件:
>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来获取它,但是我无法获得第一行所需的空格或确切信息的组合(如果没有它,程序将无效)
由于 哈丽特
答案 0 :(得分: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
开头的所有行,尝试一下。
答案 1 :(得分:0)
以下是inplace replacement.after执行命令后,文件将被更改。
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
>
答案 2 :(得分:0)
使用awk(因为Kent提供了一个sed解决方案)
awk '/^>/sub(/hg19_ct_UserTrack_3545_/, "")' input
要将第一个空格更改为下划线,请添加另一个子:
awk '/^>/sub(/hg19_ct_UserTrack_3545_/, "");sub(/ /, "_")' input
sed可能是解决这个问题的更好方法。