我想通过Unix和awk命令,有条件地将列中的值替换为一个文件中同一行中特定列的值。
例如,我有myfile.txt (3行,5列,制表符分隔):
1 A . C .
2 C T . T
3 T C C .有".“在第3到5列中。我想替换那些“。在第3-5列中,将第2列中的值放在同一行上。
你能给我指一下那方面的说明吗?
发布于 2011-06-03 17:01:50
这似乎满足了您的要求:
% awk 'BEGIN {
IFS = OFS = "\t"
}
{
for (column = 3; column <= NF; ++column) {
if ($column == ".") {
$column = $2
}
}
print
}
' test.tsv
1 A A C A
2 C T C T
3 T C C T您已经问了几个问题(没有接受任何回答!)现在就在awk上。我可以谦虚地推荐a tutorial吗?
发布于 2011-06-03 17:07:00
awk '{FS="\t"; for(i=3;i<=5;i++) if($i==".") $i=$2; print}' myfile.txthttps://stackoverflow.com/questions/6224869
复制相似问题