① linux下C++读取文件去重的问题
#include<fstream>
#include<vector>
#include<string>
#include<algorithm>
#include<iostream>
#include<sstream>
classdata_t{
public:
data_t():val(5){}
std::string&operator[](intconsti){
returnval[i];
}
std::stringconst&operator[](intconsti)const{
returnval[i];
}
private:
std::vector<std::string>val;
};
template<inti>
structcmp1{//用于sort函数
booloperator()(data_tconst&a,data_tconst&b)const{
returna[i]<b[i];
}
};
template<inti>
structcmp2{//用于unique函数
booloperator()(data_tconst&a,data_tconst&b)const{
returna[i]==b[i];
}
};
intmain(){
std::ifstreamistr("input.txt");
if(!istr){
std::cerr<<"文件打开失败 ";
return__LINE__;
}
typedefstd::vector<data_t>vector_t;
vector_tdata;
//读取文件
std::stringline;
intline_num=0;
while(getline(istr,line)){
++line_num;
data_ttmp_data;
std::istringstreamtmp_str(line);
inti=0;
for(;i!=5;++i){
if(!getline(tmp_str,tmp_data[i],' ')){
std::cerr<<"在第"<<line_num<<"行发生错误 ";
}
}
if(i==5){//该行读取成功
data.push_back(tmp_data);
}
}
//按关键字1去重
std::sort(data.begin(),data.end(),cmp1<0>());
vector_t::iteratorlast=std::unique(data.begin(),data.end(),cmp2<0>());
//按关键字2去重
std::sort(data.begin(),last,cmp1<1>());
last=std::unique(data.begin(),last,cmp2<1>());
data.erase(last,data.end());
//输出到另一个文件
std::ofstreamostr("output.txt");
if(!ostr){
std::cerr<<"文件打开失败 ";
return__LINE__;
}
for(inti=0;i!=data.size();++i){
for(intj=0;j!=5;++j){
ostr<<data[i][j]<<" ";
}
ostr<<" ";
}
return0;
}
输入文件为input.txt,样例:
111222333444555
111222333444555
1111222333444555
1111222333444555
11111222333444555
11111222333444555
输出到output.txt,样例:
111222333444555
② Linux里面sort -M file3命令作用是什么
Linux中sort命令的功能说明,如下所示;
sort命令功能:
排序文件并输出,
sort命令既可以对特定文件进行排序输出,也可以从stdin中获取输入
sort命令的语法格式:
sort [参数] [文件]
-------参数说明-----
-b:忽略每行前面开始出的空格字符
-c:检查文件是否已经按照顺序排序
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符
-f:排序时,将小写字母视为大写字母
-i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符
-m:将几个排序号的文件进行合并
-M:将前面3个字母依照月份的缩写进行排序
-n:依照数值的大小排序
-o:将排序后的结果存入制定的文件
-r:以相反的顺序来排序
-t:指定排序时所用的栏位分隔字符
-k:指定需要排序的栏位
例:
sort命令 的示例分享
[root@******* c]# cat t.c
#include
#include
#include
int main(){undefined
char c;
while(Read(0,&c,1) !=0)
Write(1,&c,1);
return 0;
}
[root@******* c]# sort t.c
}
char c;
#include
#include
#include
int main(){undefined
return 0;
while(Read(0,&c,1) !=0)
Write(1,&c,1);
③ linux下的UUID是个什么东西
UUID
简介
UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分。
2作用
UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。目前最广泛应用的 UUID,即是微软的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的应用,则有 Linux ext2/ext3 档案系统、LUKS 加密分割区、GNOME、KDE、Mac OS X 等等。
3组成
UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字
UUID由以下几部分的组合:
(1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
(2)时钟序列。
(3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。
UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers)。在ColdFusion中可以用CreateUUID()函数很简单地生成UUID,其格式为:xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx (8-4-4-4-12),可以从cflib 下载CreateGUID() UDF进行转换。
4应用
使用UUID的好处在分布式的软件系统中(比如:DCE/RPC, COM+,CORBA)就能体现出来,它能保证每个节点所生成的标识都不会重复,并且随着WEB服务等整合技术的发展,UUID的优势将更加明显。根据使用的特定机制,UUID不仅需要保证是彼此不相同的,或者最少也是与公元3400年之前其他任何生成的通用唯一标识符有非常大的区别。
通用唯一标识符还可以用来指向大多数的可能的物体。微软和其他一些软件公司都倾向使用全球唯一标识符(GUID),这也是通用唯一标识符的一种类型,可用来指向组建对象模块对象和其他的软件组件。第一个通用唯一标识符是在网络计算机系统(NCS)中创建,并且随后成为开放软件基金会(OSF)的分布式计算环境(DCE)的组件。
④ 关于linux 命令 uniq. 怎么样才能做到以下结果。
cat unique.txt |sort|uniq
sort是先进行排序
uniq 然后删除文件中的重复行
⑤ linux中每个存储器都有一个唯一什么
应该是UUID
⑥ linux文件行排序去重结果不同sort和uniq
骚年,你有仔细观察者两个命令吗?
举个例子:
文件filea为:
a
b
c
c
d
b
执行sort filea |uniq -u |wc -l,先排序,则删除了c和b的行;
执行sort -u filea |wc -l,排序,同时删除相同的行,则只删除c行。
⑦ 如何设置linux系统账户权限可读写
默认的是权限是777可读可写可执行。
你可以改一下配置文件
FTP服务启动后,文件/etc/ftpusers中配置的用户是不允许使用FTP服务的,如果需要使用,请将该用户名前加“#”取消限制。你说的ABC可以用,别的不能用,那么就在ABC这个账号前加个#就OK了
⑧ linux 中文件有uuid吗
linux中有UUID,保存在文件/sys/class/dmi/id/proct_uuid中,可以使用cat等命令查看,如:
sudocat/sys/class/dmi/id/proct_uuid
UUID说明:
UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。
UUID由以下几部分的组合:
(1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
(2)时钟序列。
(3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。
UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers)。在ColdFusion中可以用CreateUUID()函数很简单地生成UUID,其格式为:xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12),可以从cflib 下载CreateGUID() UDF进行转换。
⑨ linux UUID是什么
UUID是设备唯一识别码,在挂载等的时候,是可以直接用UUID的,等同于相应的设备及设备编号
⑩ linux下怎么样设置ssh无密码登录
1.Linux下生成密钥
ssh-keygen的命令手册,通过”man ssh-keygen“命令:
通过命令”ssh-keygen -t rsa“
生成之后会在用户的根目录生成一个 “.ssh”的文件夹
进入“.ssh”会生成以下几个文件
authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
id_rsa : 生成的私钥文件
id_rsa.pub :生成的公钥文件
know_hosts : 已知的主机公钥清单
如果希望ssh公钥生效需满足至少下面两个条件:
1) .ssh目录的权限必须是700
2) .ssh/authorized_keys文件权限必须是600
2.远程免密登录
原理图:
常用以下几种方法:
2.1 通过ssh--id的方式
命令: ssh--id -i ~/.ssh/id_rsa.put <romte_ip>
举例:
[root@test .ssh]# ssh--id -i ~/.ssh/id_rsa.pub 192.168.91.135
[email protected]'s password:
Now try logging into the machine, with "ssh '192.168.91.135'", andcheck in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[root@test .ssh]# ssh [email protected]
Last login: Mon Oct 10 01:25:49 2016 from 192.168.91.133
[root@localhost ~]#
常见错误:
[root@test ~]# ssh--id -i~/.ssh/id_rsa.pub 192.168.91.135
-bash: ssh--id: command not found //提示命令不存在
解决办法:yum -y installopenssh-clients
2.2通过scp将内容写到对方的文件中
命令:scp -p~/.ssh/id_rsa.pub root@<remote_ip>:/root/.ssh/authorized_keys
举例:
[root@test .ssh]# scp -p ~/.ssh/[email protected]:/root/.ssh/authorized_keys
[email protected]'s password:
id_rsa.pub 100% 408 0.4KB/s 00:00
[root@test .ssh]#
[root@test .ssh]#
[root@test .ssh]#
[root@test .ssh]# ssh [email protected]
Last login: Mon Oct 10 01:27:02 2016 from 192.168.91.133
[root@localhost ~]#
也可以分为两步操作:
$ scp ~/.ssh/id_rsa.pubroot@<remote_ip>:pub_key //将文件拷贝至远程服务器
$ cat ~/pub_key>>~/.ssh/authorized_keys //将内容追加到authorized_keys文件中,不过要登录远程服务器来执行这条命令
2.3 通过Ansible实现批量免密
2.3.1 将需要做免密操作的机器hosts添加到/etc/ansible/hosts下:
[Avoid close]
192.168.91.132
192.168.91.133
192.168.91.134
2.3.2 执行命令进行免密操作
ansible<groupname> -m authorized_key -a "user=root key='{{lookup('file','/root/.ssh/id_rsa.pub') }}'" -k
示例:
[root@test sshpass-1.05]# ansible test -m authorized_key -a"user=root key='{{ lookup('file','/root/.ssh/id_rsa.pub') }}'" -k
SSH password: ----->输入密码
192.168.91.135 | success >> {
"changed": true,
"key": "ssh-rsa 7A3izwT3///18B6FV5moE/8yTbFA4dBQahdtVP +sODbtGPC34HMGAHjFlsC/SJffLuT/ug/== [email protected]",
"key_options": null,
"keyfile": "/root/.ssh/authorized_keys",
"manage_dir": true,
"path": null,
"state": "present",
"unique": false,
"user": "root"
}
[root@test sshpass-1.05]#
2.4 手工复制粘贴的方式
将本地id_rsa.pub文件的内容拷贝至远程服务器的~/.ssh/authorized_keys文件中