在命令行下使用perl

http://blog.sina.com.cn/s/blog_4af3f0d20100g9oz.html

[email protected]  2
[email protected]
111
[email protected]   2222
[email protected]   1

类似这种输出,我想把他们变换成下面形式:

[email protected]
113
[email protected]
2223
就是将相同邮箱名称后面的数字相加。各位大侠能否给些思路如何用perl来实现。

答案:
perl
-anle ‘$cnt{$F[0]}+=$F[1];END{print "$_\t$cnt{$_}" for keys %cnt}‘
urfile

如果熟悉了上面几个perl命令行参数的用法,上面的这个命令应该很好理解:
每次读取urfile的一行,由于使用了-a,打开自动分离
(split)模式. 空格是缺省的分离号.
输入根据分离号被分离然后放入缺省数组@F中,
以文件的第一行为例子$F[0]
就是 [email protected] , $F[1] 就是2

$cnt{$F[0]}
+=$F[1] 就是一个哈希数组,
以$F[0]为key,$F[1]为value,把相同key的数值都叠加起来.然后把文件的每一行都这样处理一次.
END{}
就是在循环完之后再处理.里面的意思就是打印这个%cnt 哈希数组.这个哈希数组的key就是
邮箱名称,value就是叠加后的数字.

下面的是上面行命令的文本形式:

#!/usr/bin/perl
use
strict;
use warnings;

my
%hash;
while
(<>){
      chomp;
     my
@array=split;
     $hash{$array[0]}
+=$array[1];
}

END{
foreach
(keys
%hash){
        print"$_\t$hash{$_}\n";
}
}

时间: 2024-10-13 11:09:52

在命令行下使用perl的相关文章

开启linux命令行下英汉词典

实现: 步骤1:在对应的环境变量配置文件中添加如下代码(无外乎~/.bashrc./etc/profile等这些文件中)这里咱们添加到 ~/.bashrc文件中 # jianbing.org on DNS function j {     dig "$*.jianbing.org" +short txt | perl -pe's/\\(\d{1,3})/chr $1/eg; s/(^"|"$)//g' } 步骤2:重新打开一个shell,在命令行下键入j + 需要翻

JNI之——在cmd命令行下编译执行C/C++源文件

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46604269 一直用java来敲代码,java配置好jre路径之后.在cmd下编译执行.非常方便. 刚好要给一个舍友改下C程序,想到可不能够像java一样在环境变量里配置好C的编译路径呢? 于是上网搜了一下,得到例如以下结果: 一.假设装有VC,那就简单了,由于VC带有C的编译器,能够将此路径设置进环境变量. Windows系统下编译连接源码方法: cl -GX test.c -

oracle官网下载老版本jdk + 如何命令行下wget下载jdk

一.文章由来 1.前天有人再去你咨询如何下载jdk的老版本,在oracle官网上找了老半天,找不到相应的选项~ 2.等待问题解决了之后,又抛出来一个新的问题,如何wget直接下载,毕竟百十来兆的文件,下载下来再上传对于我们这种蜗牛带宽来说也是一件苦逼的事情~ 二.如何下载jdk的历史版本 1.访问http://www.oracle.com 2.点击Downloads---->Java for Developers 3.在弹出的的页面中,下拉页面到最下面,点击历史归档 4.点击进去,同意协议,然后

mysql命令行下创建和删除索引简介

mysql命令行下创建和删除索引简介: mysql中创建索引可以使用CREATE TABLE语句,也可以用CREATE INDEX或ALTER TABLE来给表增加索引.索引的删除可以使用ALTER TABLE或DROP INDEX语句来实现. (1)使用ALTER TABLE语句创建索引.语法如下:alter table table_name add index index_name (column_list) ;alter table table_name add unique (colum

Adminrun 提升命令行下运行权限脚本

为什么提升权限? 因为很多小工具,如果调用了系统的硬件,都需要申请管理员权限.换句话说,必须由管理员下达这个命令才能正常执行,否则就会提示"以管理员身份运行". 为了尽可能的保证用户们可以正常使用,而不是因为不知道如何正确运行而抱怨软件问题. 众所周知,在Windows Vista版本之后的所有Windows都加入了权限管理控制系统,这样在一定程度上防止了后台运行高级脚本的可能性.但是既然是利用图形化界面来完成的工作(鼠标右键->以管理员身份运行),就一定可以用脚本和命令行来实现

如何让Qt程序能在cmd命令行下输出qDebug信息

若让Qt程序能在cmd命令行下输出qDebug()信息, 则在pro文件中增加: WIN32: CONFIG += console 即可. 启动qt程序时会弹出一个cmd框和一个ui框,就可以看到调试信息了.

命令行下运行php的方法和技巧

linux中直接用"php"命令来执行php文件 一般在linux命令行下运行php文件的代码: XML/HTML代码 linux下执行:#php安装路径 -f php文件路径 例如:/opt/modules/php/bin/php -f /opt/data/www/yoururl/index.php 每次输入php安装路径比较麻烦,其实我们可以不用输入的哦! 将/opt/modules/php/bin/php 这个文件复制到/usr/sbin下,php将被安装为linux命令 在li

命令行下一些方便快捷的方式

在windows下,命令行下,打开文件与url的快捷方式: start filename 在ubuntu下,打开文件与url的快捷方式:xdg-open filename 在无意间发现,Cygwin,也可以这样操作,使用apt-cyg 可以使用 wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg -P /binchmod.exe +x /bin/apt-cyg 设置安装源apt-cyg -m http://mirrors.163.com/cy

在CMD命令行下关闭进程的命令

转载: [重要]在CMD命令行下关闭进程的命令━━━━━━━━━━━━━━━━━━━━━━━━━━ 方法一: 在"运行"中输入:ntsd -c q -pn 程序名字(在MS-Dos中的作用是一样的) 方法二: ntsd使用以下参数杀死进程.c:\>ntsd -c q -p PID 只要你能提供进程的PID,那么你就可以干掉进程. 法二: tskill命令 这个命令与tasklist命令是相对应的吧! tasklist命令是显示有哪些进程正在运行! tskill命令是关闭运行中的进