php脚本处理常用

文本处理与脚本运行技巧
本文介绍如何高效处理大规模文本数据,包括文本分割、去重、并集、交集和差集操作的方法,以及如何利用nohup命令和守护进程保持脚本持续运行的技术细节。

1.超过百万级的文本最好切割为以100万为单位的文本分配,多个进程运行。

2.最好以守护进程运行,即在脚本后加上&,后台会一直运行该进程,但是不能关闭终端,一旦关闭终端,该进程也会挂掉。

3.以nohup命令运行脚本,可以一直在后台运行。

nohup /usr/local/bin/php exec.php aa &

4.常用脚本处理命令

1.去重

uniq所谓的重复是连续出现的相同记录。而sort -u是全局的。 先sort,再用uniq可以实现sort -u(即sort -u file.txt 等价于sort file.txt | uniq)

2.剔除file2

//使用awk 删除两个文件相同部分;
awk '{print NR, $0}' file1 file2 |sort -k2|uniq -u -f 1|sort -k1|awk '{print $2}'

或者:
awk '{print $0}' file1 file2 |sort|uniq -u

3.split命令

用法:split [选项] [输入 [前缀]]
语法:komy@komy-vmware:~$ split [-bl] 输入文件 输出文件
参数说明
-b :以文件大小来分
-l:以行数来分

例1:
[root@centos1101 sh]# split -l 100 test.txt out
就是把test.txt每100行输出一个文件outaa,outab,outcd以此类推。。。实现了文本文件的分割。

例2:
[root@centos1101 sh]# split -b 100k test.txt out
就是把test.txt每100KB输出一个文件outaa,outab,outcd以此类推。

另外,cat 命令可将这些分割后的文件合并为一个文件,并重定向到“largefile”文件中(largefile为自定的文件名)。
[root@centos1101 sh]# cat out* > largeflie

split命令:分割文本

split -l 1000000 uid_20161201.txt uid_20161201_split_

split -b 20m RevolutionOS.rmvb RevOS_part_

4.sort和uniq实现两文件的并集,交集和差集

交集,把两个文件放到一起排序,只输出次数多于一次的项:

$ sort a.txt b.txt | uniq -d

并集,把两个文件放到一起排序,重复的项只算一次:

$ sort a.txt b.txt | uniq

差集(A-B),把B的元素重复2份和A的元素放到一起排序,只输出出现一次的项:

$ sort a.txt b.txt b.txt | uniq -u

对称差,把两个文件放到一起排序,只输出出现一次的项:

$ sort a.txt b.txt | uniq -u

5.rsync命令


download:

rsync --ignore-existing -avzr 10.73.151.174::vip/vipdata  /data1/www/applogs/new.vip.weibo.cn/rsync/member_report/201708

需要将UID上传到rsync地址,rsync文件放至10.131.0.156::admin_ugpush_data/other/,文件命名规范:大小写、下划线、数字命名,文件不需要扩展名,不要重复。
例如(不要重复):若UID文件为cf_push.txt,则上传到上面指定地址后,只需提供生成的链接:10.13.0.156::admin_ugpush_data/other/cf_push

rsync --ignore-existing -avzr $from$download_file $to $password_cmd

rsync: /usr/bin/rsync /usr/share/man/man1/rsync.1.gz

/usr/bin/rsync -rut --exclude=/.* /data1/www/xx.PHP 192.168.84.130::publish_zt/guoqing/

rsync -avz --progress /databack/experiment/rsync/ work@172.16.78.192::www

来自: http://man.linuxde.net/rsync

/usr/bin/rsync -avz --progress --exclude=/data1/www/applogs/new.vip.weibo.cn/rsync/member_report/201708/vipdata/xiewendeluonifensi 10.131.0.156::admin_ugpush_data/other/

/usr/bin/rsync -avz --progress /data1/www/applogs/new.vip.weibo.cn/rsync/member_report/201708/vipdata/push 10.131.0.156::admin_ugpush_data/other/

//awk合并文本:
awk 'NR==FNR{a[$2]=$0}NR>FNR{if($1 in a)print a[$1]"\t"$0}'  wb_count_20170101.txt  wb_bhv_birthday_20170101.txt > wb_count_all_20170101.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值