当 awk 中的行不以“#”开头时打印模式

nst*_*tam 2 awk

我想在我的文件中不以“#”开头的每一行的开头打印“chr”。

输入 :

##toto
#titi
16
17
Run Code Online (Sandbox Code Playgroud)

输出 :

##toto
#titi
chr16
chr17
Run Code Online (Sandbox Code Playgroud)

我试过 awk ( awk '$1 ~ /^#/ ...) 或 grep ( grep "^[^#]" ...) 但没有成功。我怎样才能做到这一点?

Ini*_*ian 7

我认为你需要^[^#]意义,从一个不是的字符开始,#并通过前缀来重建这些行"chr"

awk '/^[^#]/{ $0 = "chr"$0 }1'
Run Code Online (Sandbox Code Playgroud)

  • 或者`!/^#/ { ... }`(但这也匹配空行) (2认同)