2017-03-02 109 views
1

我想删除前3列;使用awk删除或删除列

这是我的数据;

DETAIL 02032017 

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

我想我的数据是这样的:

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

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

awk -v date="$(date +"%d%m%Y")" -F\| 'NR==1 {h=$0; next} 
{file="TEST_"$1"_"$2"_"date".csv"; 
print (a[file]++?"": "DETAIL"date"" ORS h ORS) $0 > file} END{for(file in a)  print "EOF " a[file] > file}' testing.csv 

谁能帮助我?

谢谢:)

我想删除前三个栏

回答

0

如果你只是想删除前三栏,你可以将其设置为空字符串,留下独自那些别“T 三列,是这样的:

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

这有仍然有这样的抢先之间的字段分隔符潜在的恼人习惯Y字段,但由于修改列反正会重新格式化行了,我认为这没关系:

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 
+0

你的意思是我需要这样做吗? ---- ** awk -v date =“$(date +”%d%m%Y“)”-F \ | 'NR> = 1 {h = $ 0;下一个} {$ 1 =“”; $ 2 =“”; $ 3 =“”; print} {file =“TEST _”$ 1“_”$ 2“_”date“.csv”; print(a [file] ++?“”:“DETAIL”date“”ORS h ORS)$ 0> file} END {for(file in a)print“EOF”a [file]> file}'testing.csv ** - @ paxdiablo?我无法得到它 – Jiji

+0

@karakfa你能帮助我吗? – Jiji