我想通过 Unix 和 awk 命令有条件地将列中的值替换为一个文件中同一行中特定列的值。
例如,我有 myfile.txt(3 行,5 列,制表符分隔):
1 A . C .
2 C T . T
3 T C C .
有“.”在第 3 至 5 列中。我想替换那些“。”第 3 - 5 列中的值与同一行中第 2 列中的值。
你能告诉我任何方向吗?
最佳答案
这似乎可以满足您的要求:
% 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 ?
关于linux - 如何通过 Unix 和 awk 命令有条件地将列中的值替换为同一行中特定列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6224869/