печатать шаблон, когда строка не начинайте с "#" в awk

Я хотел бы напечатать "chr" в начале каждой строки, которая не начинается с "#" в моем файле.

input :

##toto
#titi
16
17

вывод:

##toto
#titi
chr16
chr17

Я пробовал с awk (awk '$1 ~ /^#/... ) или grep (grep "^[^#]"... ), но безуспешно. Как мне это сделать?

1
25.06.2020, 16:04
3 ответа

Я думаю, вам нужно ^[^#]значение, начиная с символа, который не является #, и реконструировать эти строки, добавляя префикс"chr"

awk '/^[^#]/{ $0 = "chr"$0 }1'
7
28.04.2021, 23:12

с помощьюsed

sed '/^#/! s/.*/chr&/'
3
28.04.2021, 23:12

команда

awk '{if(!/^#/ && !/^$/){$0="chr"$0;print}else if (/^#/ && !/^$/){print $0}}' filename

выход

##toto
#titi
chr16
chr17

питон

#!/usr/bin/python
import re
k=re.compile(r'^#')
e=re.compile(r'^$')
p=open('filename','r')
for i in p:
    if not re.search(k,i)   and not re.search(e,i):
        print "chr{0}".format(i.strip())
    elif not re.search(e,i):
        print i.strip()

выход

##toto
#titi
chr16
chr17
0
28.04.2021, 23:12

Теги

Похожие вопросы