有一个文件,我想要在除第一个字段之外的所有字段上执行awk Gsub。有可变数量的领域,所以我想弄清楚,如果我可以写一个条件命令适用于除1美元以外的所有。awk - 适用于除一个之外的所有字段?
如果有办法说$ {2-20},我甚至会工作。但是,我似乎无法在awk的任何地方找到这种类型的命令。谢谢。这是一个可以练习的例子。
我希望做这样的事情:
编辑
我试过,但它并没有改变任何东西。
awk 'x!=$1{gsub("C","g",x);gsub("G","c",x);gsub("T","a",x);gsub("A","t",x)}{print}' F1
F1
G 6472 193 0.0 0.0 193.0 0.0 0.0 C d
T 6482 91 91.0 0.0 0.0 0.0 0.0 T d
G 7482 187 0.0 0.0 187.0 0.0 0.0 C d
T 8860 74 0.0 0.0 0.0 74.0 0.0 A d
G 9254 52 0.0 0.0 52.0 0.0 0.0 C d
A 10059 78 78.0 0.0 0.0 0.0 0.0 T d
G 10476 757 0.0 1.0 755.0 1.0 0.0 C d
G 16122 125 0.0 1.0 124.0 0.0 0.0 C d
G 17053 316 0.0 0.0 316.0 0.0 0.0 C d
G 19312 56 0.0 0.0 55.0 1.0 0.0 C d
Desired out
G 6472 193 0.0 0.0 193.0 0.0 0.0 g d
T 6482 91 91.0 0.0 0.0 0.0 0.0 a d
G 7482 187 0.0 0.0 187.0 0.0 0.0 g d
T 8860 74 0.0 0.0 0.0 74.0 0.0 t d
G 9254 52 0.0 0.0 52.0 0.0 0.0 g d
A 10059 78 78.0 0.0 0.0 0.0 0.0 a d
G 10476 757 0.0 1.0 755.0 1.0 0.0 g d
G 16122 125 0.0 1.0 124.0 0.0 0.0 g d
G 17053 316 0.0 0.0 316.0 0.0 0.0 g d
G 19312 56 0.0 0.0 55.0 1.0 0.0 g d
谢谢。
看起来只有$(NF-1)在您所需的输出中发生了变化。那是对的吗?总是很好地包含你当前使用的代码。 AND ...不要忘记'for(i = 2; i
shellter
这工作。你应该把它作为答案,以便我可以投票。有一件事会让它变得更好(而我遇到的另一个问题是awk)有没有办法在$ 8之后维持空格? Awk只是看到了白色空间,并不会将“”定义为字段。 – jeffpkamp