Awk 从制表符分隔的输入文件中删除特定字段

Awk 从制表符分隔的输入文件中删除特定字段,awk,gawk,Awk,Gawk,带有制表符分隔字段的输入文件#1: one two three four five six four one two three four five six four one two three four five six four 案例1:从每一行中,我需要删除包含字符串的所有字段,例如four,并获得仍然是单制表符分隔的剩余字段 案例2:我需要删除第n列,并为输出上的其余

带有制表符分隔字段的输入文件#1:

one     two     three   four    five    six     four
one     two     three   four    five    six     four
one     two     three   four    five    six     four
案例1:从每一行中,我需要删除包含字符串的所有字段,例如
four
,并获得仍然是单制表符分隔的剩余字段

案例2:我需要删除第n列,并为输出上的其余字段保留一个制表符分隔,但这里有多个制表符:

$ echo -e "one\ttwo\tthree\tfour\tfive\tsix\tfour\none\ttwo\tthree\tfour\tfive\tsix\tfour\none\ttwo\tthree\tfour\tfive\tsix\tfour"|awk -F"[\t]" '{$3="";$5=""}{print $0}' OFS='\t'
one     two             four            six     four
one     two             four            six     four
one     two             four            six     four

我可以通过
tr-s'\t'
发送输出来修复它,但是如何修改awk以避免
tr
命令?

您可以通过管道将输出发送到
sed
,即使
awk
将是一个有效的解决方案:

sed 's/\t*[^\t]*four[^\t]*//g'
或者使用
awk

awk -F\\t '{r = ""; for(i=1; i<=NF; i++) if($i !~ /four/) r = (r=="" ? "" : r FS) $i; print r}'

awk-F\\t'{r=”“;for(i=1;iSo你期望
1 | 2 | 4 | 6 | 4
?对不起,我从描述中删除了误导性的东西。我需要在输出上使用单个选项卡分隔的fieleds。没有什么误导性的。单管道的意思也是单个选项卡。