我想在文件中不以“#”开头的每一行的开头打印“chr”。
输入 :
##toto
#titi
16
17
输出 :
##toto
#titi
chr16
chr17
我尝试过使用 awk ( awk '$1 ~ /^#/ ...
) 或 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