几个一般提示(除了 DOS 行尾问题):
cat
用于连接文件,它不是唯一可以读取文件的工具!如果命令不读取文件,则使用重定向,如command < file
.
您可以使用选项设置字段分隔符,-F
而不是:
cat foo | awk 'BEGIN{FS="|"} {print $2 " " $1}'
尝试:
awk -F'|' '{print $2" "$1}' foo
这将输出:
com.emailclient.account name1@gmail.com
com.socialsite.auth.accoun name2@msn.com
要获得所需的输出,您可以做很多事情。我可能split()
是第二个领域:
awk -F'|' '{split($2,a,".");print a[2]" "$1}' file
emailclient name1@gmail.com
socialsite name2@msn.com
最后将第一个字符转换为大写有点麻烦,awk
因为您没有一个很好的内置ucfirst()
函数:
awk -F'|' '{split($2,a,".");print toupper(substr(a[2],1,1)) substr(a[2],2),$1}' file
Emailclient name1@gmail.com
Socialsite name2@msn.com
如果您想要更简洁的东西(尽管您放弃了子流程),您可以这样做:
awk -F'|' '{split($2,a,".");print a[2]" "$1}' file | sed 's/^./\U&/'
Emailclient name1@gmail.com
Socialsite name2@msn.com