sed избегайте замены строк, начинающихся с @ - PullRequest
1 голос
/ 10 апреля 2019

Я использовал sed 's/^/LP1-/', но эта команда также изменила строки, начинающиеся с @.

@SQ SN:NbV1Ch16     LN:148804966
@SQ SN:NbV1Ch17     LN:145611047
@SQ SN:NbV1Ch18     LN:144482707
@SQ SN:NbV1Ch19     LN:137831541
@RG ID:OZBenth8_.fastp.fq.gz        SM:OZBenth8_.fastp.fq.gz        LB:OZBenth8_.fastp.fq.gz        PL:ILLUMINA
@PG ID:bwa  PN:bwa  VN:0.7.17-r1188 CL:bwa mem OZBenth8_R1.fastp.fq.gz 
HWI-ST945_0069:8:1101:1475:2032#NNNNNN      99      NbV1Ch07        110148523       60      100M    =       110148853       430     CCAAAAAGCACAGCTGGACCAAACCGGCCCAAATATTGATAGCCGTCAGACTACGCCATGAGCGGAGTCCCCCAAGTTCGTTTGATAGAAAATTCAGGAC
    CCCFFFFFHHHHHJJJJJJJJJJJHJJJJJJJJJJJJJIJJJIIJJJJJJJJHHHFFFDECEEDDDDDDDDDDDDACDEDDDDDDDEDDDDDDDDDDDDD    NM:i:0  MD:Z:100        MC:Z:100M       AS:i:100        XS:i:68 RG:Z:OZBenth8_.fastp.fq.gz
HWI-ST945_0069:8:1101:1475:2032#NNNNNN      147     NbV1Ch07        110148853       60      100M    =       110148523       -430    AATCTTCTTCCAATTCCATGGCGGCCCAAAGTCACACGGCCTCTTCACTTTCTGAGGTTGCAAGAAGAACCACACAAAAAATATTGGGGGCTAAAATCCC
    DDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEC=FFFHHHJJJJJJJIJHGIJJIBJJJIIJJJIJJJJJFIHJHJJJJJJJJJJJJJHHHHHFFFFFCCC    NM:i:1  MD:Z:54T45      MC:Z:100M       AS:i:95 XS:i:65 RG:Z:OZBenth8_.fastp.fq.gz
HWI-ST945_0069:8:1101:1446:2101#NNNNNN      83      NbV1Ch16        133875416       44      100M    =       133874965       -551    ATATGTCTTATTCTTCTTCGACGAGTTTCAATCTAAAATTCAGTCAAAACCAAGTCTAATCTTCACCAAAACCCCTCAAAATTGAGATATAAACTCCTAA
    DDDDDD

Как можно исключить строки, начинающиеся с @, которые нужно изменить?

Заранее спасибо,

Ответы [ 3 ]

2 голосов
/ 10 апреля 2019

Вы можете использовать

sed 's/^[^@]/LP1-&/'

Здесь ^[^@] соответствует началу позиции строки с ^, а [^@] соответствует любому символу, кроме @.LP-& заменяет совпадение на LP1-, а символ, который был сопоставлен с [^@].

См. online sed demo .

Чтобы также изменитьпустые строки, используйте чередование с $, привязкой конца строки:

sed -E 's/^([^@]|$)/LP1-&/'

или BRE POSIX с GNU sed:

sed 's/^\([^@]\|$\)/LP1-&/'
1 голос
/ 10 апреля 2019

Вы можете использовать префикс команды s с отрицательным адресом:

sed -s '/^@/!s/^/LP1-/'
0 голосов
/ 13 апреля 2019

от GNU SED

sed 's/^([^@])/\1LP1-/'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...