使用制表符分隔的字段输入文件#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
命令?
答案 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}'