数据:
CHR SNP BP A1 TEST NMISS BETA SE L95 U95 STAT P
1 chr1:1243:A:T 1243 T ADD 16283 -6.124 0.543 -1.431 0.3534 -1.123 0.14
Run Code Online (Sandbox Code Playgroud)
期望的输出:
MarkerName P-Value
chr1:1243 0.14
Run Code Online (Sandbox Code Playgroud)
实际文件是 1.2G 的行,如上
我需要将文本的第二列去掉第二个冒号,然后将其粘贴到最后的第 12 列并为其指定一个新标题。
我试过了:
awk '{print $2, $12}' | cut -d: -f1-2
Run Code Online (Sandbox Code Playgroud)
但这会删除冒号后的整行,我想保留“p”列
我将其输出到一个新文件,然后使用 awk 将其粘贴到 P 值列上,但想知道是否有一种单行方法可以做到这一点?
非常感谢
我以更容易理解的形式发表评论:
$ awk '
BEGIN {
print "MarkerName P-Value" # output header
}
NR>1 { # skip the funky first record
split($2,a,/:/) # split by :
printf "%s:%s %s\n",a[1],a[2],$12 # printf allows easier output formating
}' file
Run Code Online (Sandbox Code Playgroud)
输出:
MarkerName P-Value
chr1:1243 0.14
Run Code Online (Sandbox Code Playgroud)