删除第N次出现后的内容使用单行

use*_*408 4 perl awk sed gawk nawk

我想删除在第四次出现的字符":"之后的任何字段中包含它.看例子:

输入:

1 10975     A C    1/1:137,105:245:99:1007,102,0   0/1:219,27:248:20:222,0,20 
1 19938     T TA   ./.                             1/1:0,167:167:99:4432,422,0,12,12
12 20043112 C G    1/2:3,5,0:15:92                 2/2:3,15:20:8
Run Code Online (Sandbox Code Playgroud)

预期产量:

1 10975     A C    1/1:137,105:245:99   0/1:219,27:248:20 
1 19938     T TA   ./.                  1/1:0,167:167:99
12 20043112 C G    1/2:3,5,0:15:92      2/2:3,15:20:8
Run Code Online (Sandbox Code Playgroud)

所以基本上任何具有":"的字段都应该被删除.请注意,第三行没有任何变化,因为":"仅出现三次.我试过并找到了一个解决方案(不好),它不仅适用于第一行而不适用于secod,因为它有更多的逗号","

不完整的解决方案:

sed 's/:[0-9]*,[0-9]*,[0-9]*//g'
Run Code Online (Sandbox Code Playgroud)

提前致谢

Hyn*_*dil 5

桑达:

sed -r 's/((:[^: \t]*){3}):[^ \t]*/\1/g' file | column -t
Run Code Online (Sandbox Code Playgroud)

Perl的:

perl -pe 's/((:\S*){3}):\S*/$1/g' file | column -t
Run Code Online (Sandbox Code Playgroud)