我正在编写一个awk脚本,当我想要它运行时,我必须使用命令提示符
awk -f file.awk fileitreadsfrom
我在awk脚本中编辑“fileitreadsfrom”。 我在编写脚本时遇到了编辑问题。例如,我想要
1209480997,0997-464,Anthony,Alvarado,3,Standard,Ira A Fulton 工程 - 信息技术,高级,aalvar33,非居民,
读为
Alvardo:Anthony:1209480997:Ira A Fulton Engineering - 信息 技术:高级:aalvar33:aalvar@email.com
到目前为止我尝试了什么
#!/bin/awk -f
awk '/Alvardo/ {print $4}' fileitreadsfrom
我也尝试过substr但是我担心我没能做到正确
如何修改该行并将其重新排列为适当的格式?
答案 0 :(得分:0)
首先,我想确保自己理解。您说您正在编辑输入文件,但这并不是通常使用awk的方式。取一个输入文件然后写入另一个输出文件(或写入终端,stdout)是更标准的做法。
第二,如果您要做的只是重新排列字段并将分隔符从逗号更改为冒号,那应该很简单。
awk -F, '{printf "%s:%s:%s:%s:%s:%s:%s:%s:%s:%s\n",
$4, $3, $1, $7, $8, $9, "email"}'
但是,如果电子邮件是按名字的第一个姓氏计算的,那么您可以尝试以下操作:
awk -F, '{email = sprintf ("%s%s@email.com", substr ($3, 1, 1), substr ($4, 1, 5);
printf "%s:%s:%s:%s:%s:%s:%s:%s:%s:%s\n",
$4, $3, $1, $7, $8, $9, email}'
您可以更高效地执行此操作,但是我使用了sprintf和printf来弄清楚我在做什么。如果字符很重要,请缩短字符。但我希望这样更容易理解。