gpt4 book ai didi

awk - 在 awk 中使用 gsub 替换基于另一个字段的整个字段

转载 作者:行者123 更新时间:2023-12-01 09:13:04 25 4
gpt4 key购买 nike

我有一个名为 data.txt 的制表符分隔文件,如下所示:

A       A/A     ATTAA/A      
GT G/G GT/GT
T T/TATATA T/T

如果整个字段与 column1field/column1field 的形式匹配,我想用 REP 替换第 2-3 列中的字段。像这样:

A       REP     ATTAA/A      
GT G/G REP
T T/TATATA REP

到目前为止,我有:

awk '{ gsub($1"/"$1,"REP",$0); print $0 }' data.txt

这很接近,但会在部分字段匹配时进行替换。像这样:

A       REP     ATTAREP      
GT G/G REP
T REPATATA REP

我想合并 ^ 和 $ 但是这个:

awk '{ gsub(/^/$1"/"$1/$/,"REP",$0); print $0 }' data.txt

不起作用。

如有任何帮助,我们将不胜感激!

最佳答案

我会像这样使用 for 循环:

awk '{for(i=2;i<=NF;i++){if($i==$1"/"$1){$i="REP"}}}1' file

解释:

{
# NF holds the number of fields in the record
for(i=2;i<=NF;i++){
if($i==$1"/"$1){
$i="REP"
}
}
}

1 # Evaluates to true. awk will print the line

关于awk - 在 awk 中使用 gsub 替换基于另一个字段的整个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42399623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com