2
我是新來的awk,一般殼相結合,一排。我要處理一些文件,並找到基於列awk中找到兩個文件的公共行,行中的第三個文件
兩個文件共同的行,並從文件1寫行的組合和文件2行作爲在文件3連勝。
我在網上查很多提出的解決方案,這給我帶來了得到以下結果。 我使用的文件結構和命令如下。
file1.tab
name level regno dept sex
john 900 123 csc male
debby 800 378 mth male
ken 800 234 csc male
sol 700 923 mth female
dare 900 273 phy male
olanna 800 283 csc female
olumba 400 245 phy male
petrus 800 284 mth female
file2.tab
regno grade
234 A
283 D
123 A
273 B
我能得到file3.tab與此命令
awk 'NR==FNR{a[$1];next} $3 in a {print $0}' file2.tab file1.tab > file3.tab
file3.tab
name level regno dept sex
john 900 123 csc male
ken 800 234 csc male
dare 900 273 phy male
olanna 800 283 csc female
但我要的是文件1排與排file2的整個連接到它這樣
name level regno dept sex regno grade
john 900 123 csc male 123 A
ken 800 234 csc male 234 A
dare 900 273 phy male 273 B
olanna 800 283 csc female 283 D
其次,我也希望得到file3.tab這種格式
name level regno dept sex grade
john 900 123 csc male A
debby 800 378 mth male NA
ken 800 234 csc male A
sol 700 923 mth female NA
dare 900 273 phy male B
olanna 800 283 csc female D
olumba 400 245 phy male NA
petrus 800 284 mth female NA
我用此命令
awk 'FNR==NR{a[$1]=$1;next}{print $0, "\t" (($3 in a)? a[$1]:"NA")}' file2.tab file1.tab > file3-2.tab
但我得到的是這一點,從file2.tab成績沒有顯示
name level regno dept sex
john 900 123 csc male
debby 800 378 mth male NA
ken 800 234 csc male
sol 700 923 mth female NA
dare 900 273 phy male
olanna 800 283 csc female
olumba 400 245 phy male NA
petrus 800 284 mth female NA
所有文件都製表符分隔。 請幫我解決這些問題。
謝謝anubhava的快速反應。我嘗試了命令,但所有的級柱爲「NA」 – CEPHAS
名水平REGNO部門性NA 約翰900 123 CSC男性NA 黛比800 378第m個男性NA 縣800 234 CSC男性NA 溶膠700 923第m個女NA 敢900 273 phy男性不適用 olanna 800 283 csc女性不適用 olumba 400 245 phy男性不適用 petrus 800 284月女性不適用 – CEPHAS
答案中顯示的輸出是預期輸出之一。但是當我運行命令時,我得到的輸出與您在答案中顯示的輸出不一樣。所有成績列條目均爲「NA」 – CEPHAS