2016-04-10 26 views

cevap

2
$ awk ' 
    NR==FNR { b[$1]=$0; next } 
    { print ($1 in b ? b[$1] : $1); delete b[$1] } 
    END { for (i in b) print b[i] } 
    ' fileB fileA 
john 
peter does something 
mary sleeps 
alex 
cloey looks at him 
franz is the new here 

yukarıda "rastgele" sırayla (detaylar için http://www.gnu.org/software/gawk/manual/gawk.html#Scanning-an-Array bakınız) fileB kalan öğeleri yazdırır. Bu bir sorunsa, yazdırılması gerekenler için gereksinimlerinizi açıklığa kavuşturmak için sorunuzu düzenleyin.

Ayrıca, her dosyadaki anahtarların benzersiz olduğunu varsayar (örn. peter, her dosyada yalnızca bir kez anahtar olarak görünür) . Eğer durum bu değilse, daha sonra bir anahtarın geniş giriş/çıkışınızda bir anahtarın birden çok kez göründüğü durumları içerecek şekilde düzenleyin ve ek olarak nasıl ele alınacağını açıklayın.