我正在寻找是否有人可以帮助我修改特定字段上的特定值。一个具体的例子是:
thissample000 0field2 00field3 11
field1sample0 0field2 00field3 11
thissample000 0field2 00field3 0
field1sample0 0field2 00field3 11
thissample000 0field2 00field3 0
field1sample0 0field2 00field3 0
field1sample0 0field2 00field3 11
field1sample0 0field2 00field3 11
field1sample0 0field2 00field3 0
thissample000 0field2 00field3 0
thissample000 0field2 00field3 11
thissample000 0field2 00field3 11
field1sample0 0field2 00field3 11
field1sample0 0field2 00field3 0
thissample000 0field2 00field3 11
从以上所述,我仅需要修改字段4(第4列)的值为0,但仅当字段1(第1列)为thissample000时才需要修改。 我不能使用sed命令,因为所有字段的字符都为0,并且由于有数千行,所以无法手动编辑它。 寻求您的帮助。这是通过LINUX btw。
谢谢!
答案 0 :(得分:1)
在awk
中,这似乎很简单:
awk '$1=="thissample000"{$4="0"}1' file
但这会重新格式化输出。因此,我们需要使用其split
实现的gawk:
awk '$1=="thissample000"{split($0, a, FS, seps); a[4]="0"; for (i=1;i<=NF;i++) printf("%s%s", a[i], seps[i]);print"";next}1' file