加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

unix – AWK首先打印$2,然后$1

发布时间:2020-12-15 19:03:52 所属栏目:安全 来源:网络整理
导读:这是输入(样本): name1@gmail.com|com.emailclient.accountname2@msn.com|com.socialsite.auth.account 我正在努力实现这个目标: Emailclient name1@gmail.comSocialsite name2@msn.com 如果我像这样使用AWK: cat foo | awk 'BEGIN{FS="|"} {print $2 " "
这是输入(样本):
name1@gmail.com|com.emailclient.account
name2@msn.com|com.socialsite.auth.account

我正在努力实现这个目标:

Emailclient name1@gmail.com
Socialsite name2@msn.com

如果我像这样使用AWK:

cat foo | awk 'BEGIN{FS="|"} {print $2 " " $1}'

它通过在字段2的顶部覆盖字段1来弄乱输出。

任何提示/建议?谢谢。

几个一般提示(除了DOS行结束问题):

cat用于连接文件,它不是唯一可以读取文件的工具!如果命令不读取文件,则使用重定向,如命令<文件。 您可以使用-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

要获得所需的输出,您可以做各种各样的事情。我可能会分裂()第二个字段:

awk -F'|' '{split($2,a,".");print a[2]" "$1}' file
emailclient name1@gmail.com
socialsite name2@msn.com

最后将第一个字符转换为大写是awk的一点点痛苦,因为你没有一个很好的内置ucfirst()函数:

awk -F'|' '{split($2,".");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,".");print a[2]" "$1}' file | sed 's/^./U&/'
Emailclient name1@gmail.com
Socialsite name2@msn.com

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读