Regex 使用awk命令在perl中解析文件
我正试图从以下输入文件input.txt中实现一些功能: 现在我想要op.txt: 说明:Regex 使用awk命令在perl中解析文件,regex,perl,awk,Regex,Perl,Awk,我正试图从以下输入文件input.txt中实现一些功能: 现在我想要op.txt: 说明: 1) 只需要一个记录(电子邮件)一次。 2) 对于相同电子邮件ID的所有记录,需要第二列+第三列($2+3)的总和。 e、 g: 文件包含两个ron@xyz.com 第一行(8+10)加第二行(9+11)的和等于38。 如果shell脚本更可行,那么我可以使用它。 编辑: 我确实尝试了以下命令,但我不知道如何将两者集成,因为第一个命令会找到指定关键字的总和: cat input.txt | grep "r
1) 只需要一个记录(电子邮件)一次。
2) 对于相同电子邮件ID的所有记录,需要第二列+第三列($2+3)的总和。
e、 g:
文件包含两个ron@xyz.com 第一行(8+10)加第二行(9+11)的和等于38。
如果shell脚本更可行,那么我可以使用它。
编辑:
我确实尝试了以下命令,但我不知道如何将两者集成,因为第一个命令会找到指定关键字的总和:
cat input.txt | grep "ron@" | awk '{print $1+$2}'|paste -sd+ | bc
这一个为第一列查找唯一的条目:
cat input.txt |awk '{print $1}'|uniq
如果input.txt有更多要添加的列,则此命令将更有用
awk'{for(i=2;i首先,你自己试试看,看看你有什么想法。然后我们可以帮助你。其次,我不明白“在perl中使用awk命令”是什么意思。
(8+10)+(9+11)
为38,而不是28。的预期值为jack@abc.com看起来也是错误的。@F.J抱歉,我的错误编辑了问题。在发布问题之前,我尝试过编辑问题,抱歉,我没有这么早提到。
ron@xyz.com 8 10
ron@xyz.com 9 11
cat input.txt | grep "ron@" | awk '{print $1+$2}'|paste -sd+ | bc
cat input.txt |awk '{print $1}'|uniq
awk '{
a[$1]+=$2+$3
}
END {
for (i in a)
print i, a[i]
}' input.txt > op.txt