linux - If/then 语句与 awk

标签 linux shell awk bioinformatics

我正在尝试解决隐藏在 awk 问题背后的生物信息学问题。

我有一个制表符分隔的文件,其中第一列是整数 (1-25) 或字符串 (KN#######)。我需要在行的开头附加一些字符,具体取决于它是什么。这是我到目前为止所拥有的,但没有工作(即 - 没有任何反应,也没有错误被写入 STDOUT,这让我觉得我在某处努力工作)。

awk '{
if ( $1 ~ /^[0-0]+$/ )
'$1="chr"$1'
else 
'$1="chrUn_"$1'
}' someFile

例子:

1 100 100
1 100 100
KN1234 100 100

应该变成

chr1 100 100
chr1 100 100 
chrUn_KN1234 100 100 

最佳答案

你的正则表达式不对

$ awk           '{pre="UNKNOWN"} 
    $1~/^[0-9]+$/{pre="chr"} 
         $1~/^KN/{pre="chrUn_"} {print pre $0}' file

关于linux - If/then 语句与 awk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39579281/

相关文章:

shell - Makefile 在指定目录中找不到输入文件

bash - 是否有任何简单的方法来检查 Bash 中是/否选项的所有可能性?

linux - 将文件 1 的一列与文件 2 的两列进行比较

linux - 如何获取 find 命令的参数并将它们打印出来?

linux - 为什么 mv --backup 在 CentOS 7 上不起作用?

linux - 交互式和非交互式 shell 中的环境变量

linux - 找不到命令

linux - 如何限制递归文件列表的深度?

linux - 如何在 sed 命令中使用变量来替换属性文件中的属性值

bash - 列 : randomly keep one 中的重复项