2017-03-02 152 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