C++对文本里面的大量数据进行排序(shell,c++,fopen,awk,sed)
2015-04-29 09:27
393 查看
#/bin/bash #对文本里面的数据进行排序 awk 'BEGIN{ RS="," } {print $0} END{ }'<a | sort -n | sed '/^$/ d' | awk 'BEGIN{ RS="\n";ORS="," } {print $0} END{ }'|sed 's/,$//g' 下面是c++版本的。 ---------------------------------------------------------------------- #include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; template<int _N> class Bitset { public: Bitset() { _Tidy();//调用_Tidy()函数会初始化所有位为0. } void Show()//显示01位. { for(int _I=0;_I<_N;_I++) { cout<<(test(_I)?'1':'0'); } } bool test(int _P)//测试该位置是否为真(1). { int _I = _P/32; return (A[_I]>>(_P%32))&0x1; } void _Tidy() { for(int _I=0;_I<_W;_I++) { A[_I] = 0; } } void set(int _P)//将_p下标设置为1. { int _I = _P/32; A[_I] |= (0x1<<(_P%32)); } void printf() { for(int _I=0;_I<_N;_I++) { test(_I) && (cout<<_I<<" "); } }//打印排列结果. private: typedef long LONG;//以long的4个字节为一个单位数组. enum{_Nw=(_N-1)/(sizeof(LONG)*8), _W=_Nw+1}; int A[_W]; }; template<int _N> void deal_what(int &sum,char c,Bitset<_N> &a,FILE *&out) { if(c!=' ' && c!=',' && c!='\n') { sum=(sum*10+(c-'0')); return ; } else{ a.set(sum);//将数据设置到指定位中。 } sum = 0; } template<int _N> void get_result(Bitset<_N> &a,FILE *&out) { int sum = 0; while(1) { char c = fgetc(out); if(c==EOF) { return; } deal_what<_N>(sum,c,a,out); } } int get_value(int x,int &n)//求数字位数 { x && (n=get_value(x/10,n)+1); return n; } template<int _N> void in_put(Bitset<_N> &a,FILE *&in)//往文件b里面写入结果。 { for(int _I=0;_I<_N;_I++) { if(a.test(_I)) { int _H=_I; int _K = 0; get_value(_H,_K); int flog = _K; int save=0; while(1) { int sum=1; for(int _J=_K;_J>0;_J--) { sum*=10; } char c = ((_H-save*sum)/(sum/10))+'0'; save = _H/(sum/10); fputc(c,in) ; flog--; _K--; if(flog==0) break; } fputc(' ',in); } } } int main() { FILE *out = fopen("a","a+"); FILE *in = fopen("b","a+"); Bitset<100> a; get_result(a,out); in_put(a,in); fclose(out); fclose(in); }
相关文章推荐
- shell脚本之使用sed和awk进行文本处理
- Shell学习:sort、uniq命令对文本进行排序、单一和重复操作
- 将大量有规律txt文本数据转换成xml格式,在导入excel,生成excel文件,在导入spass中,对数据进行分析
- 规则文本数据文件根据关键字段进行排序的实现
- Android中对ListView、RecycleView里面的数据进行排序方法总结
- shell脚本之正则表达和文本处理(文本处理三剑客:1、grep 2、sed 3、awk)
- 按任意词或字段对文本数据进行排序或筛选 (LINQ)
- 对文本和数据进行处理之awk编程
- Shell文本处理 (4) sed、awk、diff、patch、
- 根据数组里面数据的日期进行排序
- SHELL:awk,sed,常用文本处理命令
- 怎么对list里面的数据的某一个字段进行排序
- SED,AWK学习笔记Part 1-----利用正则表达式进行文本匹配[转]
- 对大量的数据进行排序
- 几个常用的文本处理shell 命令:find、grep、sort、uniq、sed、awk
- 参考C语言的qsort函数实现一个一个能对任意数据类型(包括结构体)的数组进行排序的函数(里面用的不是快速排序)
- python初学―-实现excel里面读数据进行排序(改进算法)
- shell 删除文本中的重复行(sort+uniq/awk/sed) (方法=效率啊)
- c# 读取文本中的一行用逗号连接数据,并对其进行排序
- python初学―-实现excel里面读数据进行排序