我有一个名为score.tsv的文件,内容更像是:
1 jack 100 good
2 tom 50 notgood
....
我希望修改第二行的第四个字段" notgood"到"失败"
awk -F"\t" '{if (NR==2) $4="fail";print > "temp.tsv"}' score.tsv
它有效。
然后我意识到我需要将第二行的第二个字段更改为" lily"太。 所以我试过
awk -F"\t" '{if (NR==2) $2="lily";print > "temp1.tsv"}' temp.tsv
它没有用。
temp1.tsv的内容是
1 jack 100 good
2 tom 50 fail lily
.....
如何逐个更改文件的一行中的字段?感谢
答案 0 :(得分:3)
问题是,在您的第一个命令nogood->fail
中,您没有发现OFS
。所以在你的tmp.txt中,它不是<tab>
分开的。所以在你的第二个命令中,$2
实际上不存在,awk将追加 lily
到第二行。
试试这两行:
awk -F"\t" -v OFS="\t" '{if (NR==2) $4="fail";print > "temp.tsv"}' score.tsv
awk -F"\t" -v OFS="\t" '{if (NR==2) $2="lily";print > "temp1.tsv"}' temp.tsv