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