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

时间:2018-04-21 11:16:05

标签: awk gawk

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

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

case1:从每一行开始,我需要删除包含字符串的所有字段,例如four,并获取单个TAB分隔的剩余字段。

case2:我需要删除第n列,并为输出中的其余字段留下一个TAB分隔,但在这里我得到多个TAB:

$ 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命令?

1 个答案:

答案 0 :(得分:2)

您可以将输出传输到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}'