使用awk删除或删除列

时间:2017-03-02 01:49:14

标签: unix awk split

我想放弃前3列;

这是我的数据;

NullPointerException

我想要这样的数据:

DETAIL 02032017 

Name    Gender  State   School  Class
A          M    Melaka  SS  D
B          M    Johor   BB  E
C          F    Pahang  AA  F
EOF 3               

这是我当前的命令,我得到 mycommandoutput

DETAIL 02032017             
School  Class
SS       D
BB       E
AA       F
EOF 3   

任何人都可以帮助我吗?

谢谢:)

我想删除前三列

1 个答案:

答案 0 :(得分:0)

如果你只想删除前三列,你可以将它们设置为空字符串,只留下那些没有 三列的字符串,例如:

awk 'NF>=3 {$1=""; $2=""; $3=""; print; next}{print}'

这有一个令人讨厌的习惯,那就是在这些空字段之间仍然有字段分隔符,但是,因为修改列会重新格式化该行,我认为没问题:

DETAIL 02032017
   School Class
   SS D
   BB E
   AA F
EOF 3

如果awk是用于处理它们的唯一工具,则间距不重要。如果您想要保留格式(意味着列位于该行的非常特定的位置),您只需获取整行的子字符串:

awk '{if (NF>=3) {$0 = substr($0,25)}; print}'

由于这不会修改单个字段,因此不会触发重新计算会改变其格式的行:

DETAIL 02032017
School Class
SS  D
BB  E
AA  F
EOF 3