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

remove specific fields from tab separated input file

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

one     two     three   four    five    six     four
one     two     three   four    five    six     four
one     two     three   four    five    six     four

案例 1:我需要从每一行中删除所有包含字符串的字段,例如 four 并仍然得到单个 TAB 分隔的剩余字段。

案例 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]" '{="";=""}{print [=11=]}' 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}'