(AWK)使用名字和姓氏列中的字符创建用户名列

时间:2014-04-28 11:05:18

标签: bash awk

尝试在最后一个之后获得一个新列的输出,该列使用第一个名字的第一个字母和姓氏的其余部分。使用awk输入的正确方法是什么?

INPUT:

Vincent Nguyen
David Pham
Bobby Hill

输出:

Vincent Nguyen vnguyen
David Pham dpham
Bobby Hill bhill

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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