awk의 줄이 "#"으로 시작하지 않는 경우 인쇄 패턴

awk의 줄이 "#"으로 시작하지 않는 경우 인쇄 패턴

"#"으로 시작하지 않는 파일의 모든 줄 시작 부분에 "chr"을 인쇄하고 싶습니다.

입력하다:

##toto
#titi
16
17

산출:

##toto
#titi
chr16
chr17

awk '$1 ~ /^#/ ...awk( ) 또는 grep( ) 을 사용해 보았 grep "^[^#]" ...으나 성공하지 못했습니다. 어떻게 해야 하나요?

답변1

^[^#]그렇지 않은 문자로 시작하여 #접두어로 줄을 재구성하는 의미가 필요하다고 생각합니다."chr"

awk '/^[^#]/{ $0 = "chr"$0 }1'

답변2

사용sed

sed '/^#/! s/.*/chr&/'

답변3

주문하다

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

관련 정보