Awk 从制表符分隔的输入文件中删除特定字段
带有制表符分隔字段的输入文件#1: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列,并为输出上的其余
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。没有什么误导性的。单管道的意思也是单个选项卡。