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

Python

#!/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

関連情報