我有一个包含数百行的文件,每行都有一组带分隔符的字符〜如下所示。
T01~T02~T03~T04~T05~T06~T07~T08~T09~T10~T11~~T13
.
.
.
.
我需要使用awk删除T02,T11和T12。如果你看到上面的字符串,那么T12是null但我仍然需要清空那个位置,我的输出应该是这样的:
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
任何人都可以告诉我,如果我错过任何事情......
答案 0 :(得分:2)
您需要OFS
,并且可以将print $0
更改为1
awk -F~ '{$2=$11=$12=""} gsub(/~+/,"~")' OFS="~"
T01~T03~T04~T05~T06~T07~T08~T09~T10~T13
答案 1 :(得分: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
答案 2 :(得分:0)
您还需要更改输出字段分隔符:
awk -F~ '{$2=$11=$12="";print $0}' OFS="~"