C++对文本里面的大量数据进行排序(shell,c++,fopen,awk,sed)
发布时间:2020-12-16 07:43:00 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #/bin/bash #对文本里面的数据进行排序 awk 'BEGIN{ RS="," } {print $0} END{ }'a | sort -n | sed '/^$/ d' | awk 'BEGIN{ RS="n";ORS="," } {prin
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 #/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); } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |