分享一例shell脚本,以实现不同文件间的手机号主被叫的拼接处理,用来学习shell编程是相当不错的。 用shell脚本处理不同文件中手机号码的主被叫拼接。
文件如下:
要求:
代码:
复制代码代码示例:
#!/bin/bash
(责任编辑:IT)#------------------------------------------------------ # File Name: split_file.sh # 1:calling_file 为主叫文件名称,called_file 为被叫文件名称 # 2:calling_file 会被切换成$num行的多个小文件 # 3:拼接成主叫|被叫|内容 被叫要求循环使用。 #----------------------------------------------------- calling_file=calling called_file=called #切割的条件:行 line=5000 content="hello" #将主被叫文件转换成unix 格式 dos2unix $calling_file dos2unix $called_file split -l$line $calling_file calling_split_ #取被叫号码,添加至主叫文件时循环判断使用 called_num=`wc -l $called_file | awk '{print$1}'` for sub_file in `ls calling_split_*` #for sub_file in `ls test` do echo $sub_file file_num=`wc -l $sub_file|awk '{print$1}'` for ((i=1,j=1;i<=file_num;i++)); do echo "正在处理${sub_file}文件第$i行,$called_file文件第$j行" #取called第$j行的内容,添加至calling对应的$i行后面。格式:calling的$i行|called的$j行|内容 called_text=`awk NR==$j called` sed -i ${i}'s/$/|'${called_text}'|'$content'/' $sub_file #被叫行号手动加1 j=`expr $j + 1` if [ "$j" -gt "$called_num" ];then echo "被叫号码轮循完毕, 重置为第1行,继续...." j=1 fi done done exit 0 |