0

我有一个包含数百行的文件,每行都有一组带有分隔符的字符 ~ 如下所示。

T01~T02~T03~T04~T05~T06~T07~T08~T09~T10~T11~~T13
.
.
.
.

我需要使用 awk 删除 T02、T11 和 T12。如果您看到上面的字符串,则 T12 为空,但我仍然需要清空该位置,我的输出应如下所示:

T01~T03~T04~T05~T06~T07~T08~T09~T13

我尝试了以下 awk 命令

awk -F~ '{$2=$11=$12="";print $0}'

但它给出的输出像

T01 T02 T03 T04 T05 T06 T07 T08 T09 T10 T11  T13

如果我错过了什么,谁能告诉我..

4

3 回答 3

2

您需要OFS,您可以更改print $01

awk -F~ '{$2=$11=$12=""} gsub(/~+/,"~")' OFS="~"
T01~T03~T04~T05~T06~T07~T08~T09~T10~T13
于 2013-09-25T10:45:02.130 回答
1

你可以使用cut

$ echo "T01~T02~T03~T04~T05~T06~T07~T08~T09~T10~T11~~T13" | cut -d~ -f1,3-10,13
T01~T03~T04~T05~T06~T07~T08~T09~T10~T13
于 2013-09-25T10:49:45.193 回答
0

您还需要更改输出字段分隔符:

awk  -F~ '{$2=$11=$12="";print $0}' OFS="~"
于 2013-09-25T10:46:24.490 回答