试图实现在使用名字的第一个字母和姓氏的其余部分后的最后一个字段的输出。使用awk输入这个输出的正确方法是什么?(AWK)使用名字和姓氏列中的字符创建用户名列
输入:
Vincent Nguyen
David Pham
Bobby Hill
输出:
Vincent Nguyen vnguyen
David Pham dpham
Bobby Hill bhill
试图实现在使用名字的第一个字母和姓氏的其余部分后的最后一个字段的输出。使用awk输入这个输出的正确方法是什么?(AWK)使用名字和姓氏列中的字符创建用户名列
输入:
Vincent Nguyen
David Pham
Bobby Hill
输出:
Vincent Nguyen vnguyen
David Pham dpham
Bobby Hill bhill
你可以这样做:
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
根据你的榜样,试试这个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
+1祝贺达到10K – user000001
@ user000001谢谢,感觉不错:) – Jotne