使用awk删除特定行的第n个字段

Delete nth field of specific line using awk

我无法弄清楚如何删除 awk 脚本中特定行的第 n 个字段。基本上我有 4 个字段,我将第二个和第三个字段合并为一个,将第三个字段设置为等于第四个字段,现在我需要消除第四个字段。

看起来像这样:

=" "
=
=""

这不起作用,因为即使 $4 现在是一个空字符串,它们仍然是大约 $3 的尾随标签,我相信也是 $4。我需要一种方法将这一特定行减少到前 3 个字段,但我一直无法弄清楚如何。有帮助吗?

输入行如下所示:

string1 [tab] string2 [tab] string3 [tab] string4

我试图让输出行看起来像这样:

string1 [tab] string2 string3 [tab] string4]

这是有条件的,所以我需要它对当前的单个行进行操作,而不是文件中的每一行

例如,假设我有以下输入文件:

12345    jones, michael    madison    0101-10101-2
12345    water    oil    0101-10101-2
12346    jones, mike    mason    0101-10101-3
12347    jones, nick    norris    0101-10101-4

并且我想保留上面的第二行,因为第三个字段是 oil 但结合第二个和第三个字段,否则我的预期输出将是:

12345    jones, michael madison    0101-10101-2
12345    water    oil    0101-10101-2
12346    jones, mike mason    0101-10101-3
12347    jones, nick norris    0101-10101-4
$ awk -F'\t' '!="oil"{[=10=] =  FS  " "  FS } 1' file     
12345   jones, michael madison  0101-10101-2
12345   water   oil     0101-10101-2
12346   jones, mike mason       0101-10101-3
12347   jones, nick norris      0101-10101-4