2014-04-28 57 views

回答

3

你可以這樣做:

awk '{print $0,tolower(substr($1,1,1)$NF)}' file 
Vincent Nguyen vnguyen 
David Pham dpham 
Bobby Hill bhill 

可以縮短一些是:(但不太可靠)

awk '$0=$0FS tolower(substr($1,1,1)$NF)' file 

更新,可支持更長的名稱,如:

Bobby Bigfoot Hill 

Bobby Bigfoot Hill bhill 
+0

+1祝賀達到10K – user000001

+0

@ user000001謝謝,感覺不錯:) – Jotne

2

根據你的榜樣,試試這個sed oneliner:

sed -r 's/(.)\S* (.*)/& \L\1\2/' file 

測試:

kent$ cat f 
Vincent Nguyen 
David Pham 
Bobby Hill 

kent$ sed -r 's/(.)\S* (.*)/& \L\1\2/' f 
Vincent Nguyen vnguyen 
David Pham dpham 
Bobby Hill bhill 
+0

如果用戶比第一個/最後一個名字多,則失敗。 – Jotne

+0

@Jotne說實話,我期待着這個評論來。 :D這就是爲什麼我寫'基於你的例子'。是的,如果有更多的名稱部分,如中間名等,sed單線需要調整。 – Kent

相關問題