2014-04-28 51 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

相关问题