首页 文章

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

提问于
浏览
1

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

它看起来像这样:

$2=$2" "$3
$3=$4
$4=""

这不起作用,即使$ 4现在是一个空字符串,他们仍然是一个约3美元的尾随标签,我相信也是4美元 . 我需要一种方法将这一条特定线切割成前三个区域,但我无法弄清楚如何 . 有帮助吗?

输入行如下所示:

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

而我正在尝试使输出行看起来像这样:

string1 [tab] string2 string3 [tab] string4]

这是一个有条件的 I need it to operate on the current individual line and not every line in the 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

我希望保留第二行,因为第三个字段是 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

1 回答

  • 0
    $ awk -F'\t' '$3!="oil"{$0 = $1 FS $2 " " $3 FS $4} 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
    

相关问题