uniq用法
作用:从一个文本文件中去除或禁止重复行。
uniq与sort命令中唯一性选项的区别:其中,前者去除连续不断出现的行,保留一个;后者去除所有重复行,保留一
个。
uniq格式:
uniq -u d c -f input-file output-file
含义:
-u 只显示不重复行
-d 只显示有重复数据行,每种重复行只显示其中一行
-c 打印每一重复行出现次数
-f n为数字,前n个域被忽略
注意:一些系统不识别-f选项,这时替代使用-n。
下面用例子演示上面的选项:
a、创建文件myfile.txt,内容为:
c、
前3行都是May Day但是第5行的May Day没有连续出现。
d、
e、
f、下面来测试特定域 进行测试-f选项:
创建文本parts.txt,内容为:
join用法:
作用:将来自两个分类文本文件的行连在一起。
工作方式:前提是两个文本文件已经分类,里面都有一些元素与另一个文件相关,join就是通过这个相关的内容连在
一起的。文本文件中的域通常由空格或tab键分隔,也可以用其他的分隔符。
格式为:
join [options] input_file1 input_file2
options内容:
an n为数字,用来连接时从文件n中显示不匹配行。如-al显示第一个文件的不匹配行。
o n.m n为文件号,m为域号。如,1.3表示只显示文件1第三域。每个n.m组合中必须用都好分隔,如1.3,2.1。
j n m n为文件号,m为域号。使用其他域作连接域。
t 域分隔符。例如,指定冒号做域分隔符-t:。
注意,这里的域从1开始算。
下面进行测试。
先准备两文档names.txt,内容为:
使用-o选项,例如使用1.1显示第一个文件第一个域,2.2显示第二个文件第二个域,记住用逗号隔开:
join -jn m -jn m file1 file2
例如:
cut命令
作用:用来从标准输入或文本文件中剪切列或域。可以与粘贴命令一起使用。
格式为:
cut [options] file1 file2
介绍:
-c 指定剪切的字符数
-f 指定剪切域数
-d 指定与空格和tab键不同的域分隔符
-c的格式为:
-c1,5-7 剪切第1个字符,然后是第5到第7个字符
-c1-50 剪切前50个字符
-f的格式与-c的格式相同:
-f1,5 剪切第1域,第5域。
-f1,10-12 剪切第1域,第10到12域。
下面测试一下:
修改pers文件为:
a、剪切指定域:
paste用法:
cut用来从文本文件或标准输出中抽取数据列或者域,然后再用paste可以将这些数据粘贴起来形成相关文件。粘贴两
个不同来源的数据时,首先需将其分类,并确保两个文件行数相同。
paste将按行将不同文件行信息放在一行。缺省情况下,paste连接时,用空格或tab键分隔新行中不同文本,除非指
定 -d选项,它将成为域分隔符。
格式为:
paste -d -s file1 file2
解释:
-d 指定不同于空格或tab键的域分隔符。
-s 将每个文件合并成行来粘贴。
示例:
创建两个文件pas1:
split命令
作用:将大文件分割成小文件。格式为:
split -output_file-size input-filename output-filename
其中output_file-size是文本文件被分割的行数。
例如:
创建文件split1,内容为:
可以查看内容,例如:
字符组合。
作用:从一个文本文件中去除或禁止重复行。
uniq与sort命令中唯一性选项的区别:其中,前者去除连续不断出现的行,保留一个;后者去除所有重复行,保留一
个。
uniq格式:
uniq -u d c -f input-file output-file
含义:
-u 只显示不重复行
-d 只显示有重复数据行,每种重复行只显示其中一行
-c 打印每一重复行出现次数
-f n为数字,前n个域被忽略
注意:一些系统不识别-f选项,这时替代使用-n。
下面用例子演示上面的选项:
a、创建文件myfile.txt,内容为:
[root@localhost test]# cat myfile.txt
May Day
May Day
May Day
Going Down
May Day
b、去除连续出现的重复行:May Day
May Day
May Day
Going Down
May Day
[root@localhost test]# uniq myfile.txt
May Day
Going Down
May Day
记住,是连续出现的。
May Day
Going Down
May Day
c、
[root@localhost test]# uniq -u myfile.txt
Going Down
May Day
上面这段命令的结果的意思是说,存在有字符串Going Down和May Day没有连续出现的情况。虽然myfile.txt的
Going Down
May Day
前3行都是May Day但是第5行的May Day没有连续出现。
d、
[root@localhost test]# uniq -c myfile.txt
3 May Day
1 Going Down
1 May Day
上面使用-c选项显示每个重复行数目。
3 May Day
1 Going Down
1 May Day
e、
[root@localhost test]# uniq -d myfile.txt
May Day
上面的-d用来显示重复出现的不唯一行,意思就是说哪些内容是有连续出现的。在这里May Day连续重复出现3次。
May Day
f、下面来测试特定域 进行测试-f选项:
创建文本parts.txt,内容为:
[root@localhost test]# cat parts.txt
AK123 OP
DK122 OP
EK999 OP
现在如果测试第1域,则uniq会比较三个相同的OP,因此将返回一行:
AK123 OP
DK122 OP
EK999 OP
[root@localhost test]# uniq -f2 parts.txt
AK123 OP
如故'-f'返回错误,替代使用:
AK123 OP
[root@localhost test]# uniq -n2 parts.txt
AK123 OP
AK123 OP
join用法:
作用:将来自两个分类文本文件的行连在一起。
工作方式:前提是两个文本文件已经分类,里面都有一些元素与另一个文件相关,join就是通过这个相关的内容连在
一起的。文本文件中的域通常由空格或tab键分隔,也可以用其他的分隔符。
格式为:
join [options] input_file1 input_file2
options内容:
an n为数字,用来连接时从文件n中显示不匹配行。如-al显示第一个文件的不匹配行。
o n.m n为文件号,m为域号。如,1.3表示只显示文件1第三域。每个n.m组合中必须用都好分隔,如1.3,2.1。
j n m n为文件号,m为域号。使用其他域作连接域。
t 域分隔符。例如,指定冒号做域分隔符-t:。
注意,这里的域从1开始算。
下面进行测试。
先准备两文档names.txt,内容为:
[root@localhost test]# cat names.txt
M.Golls 12 HIdd Rd
P.Heller The Acre
P.Willey 132 The Grove
T.Norms 84 Connaught Rd
K.Fletch 12 Woodlea
文档town.txt:
M.Golls 12 HIdd Rd
P.Heller The Acre
P.Willey 132 The Grove
T.Norms 84 Connaught Rd
K.Fletch 12 Woodlea
[root@localhost test]# cat town.txt
M.Golls Norwich NRD
P.Willey Galashiels GDD
T.Norms Brandon BSL
K.Fletch MIldenhall MAF
a、先观察两个文件有相同内容的域0,连接两个文件:M.Golls Norwich NRD
P.Willey Galashiels GDD
T.Norms Brandon BSL
K.Fletch MIldenhall MAF
[root@localhost test]# join names.txt town.txt
M.Golls 12 HIdd Rd Norwich NRD
P.Willey 132 The Grove Galashiels GDD
T.Norms 84 Connaught Rd Brandon BSL
K.Fletch 12 Woodlea MIldenhall MAF
b、选择性连接:M.Golls 12 HIdd Rd Norwich NRD
P.Willey 132 The Grove Galashiels GDD
T.Norms 84 Connaught Rd Brandon BSL
K.Fletch 12 Woodlea MIldenhall MAF
使用-o选项,例如使用1.1显示第一个文件第一个域,2.2显示第二个文件第二个域,记住用逗号隔开:
[root@localhost test]# join -o 1.1,2.2 names.txt town.txt
M.Golls Norwich
P.Willey Galashiels
T.Norms Brandon
K.Fletch MIldenhall
c、使用-jn m进行其他域进行连接,在这里要在连接的两个文件中找到作为连接键的域,命令为:M.Golls Norwich
P.Willey Galashiels
T.Norms Brandon
K.Fletch MIldenhall
join -jn m -jn m file1 file2
例如:
[root@localhost test]# join -j1 1 -j2 1 names.txt town.txt
M.Golls 12 HIdd Rd Norwich NRD
P.Willey 132 The Grove Galashiels GDD
T.Norms 84 Connaught Rd Brandon BSL
K.Fletch 12 Woodlea MIldenhall MAF
上面这个是用文件1的域1和文件2的域1作为连接键。
M.Golls 12 HIdd Rd Norwich NRD
P.Willey 132 The Grove Galashiels GDD
T.Norms 84 Connaught Rd Brandon BSL
K.Fletch 12 Woodlea MIldenhall MAF
cut命令
作用:用来从标准输入或文本文件中剪切列或域。可以与粘贴命令一起使用。
格式为:
cut [options] file1 file2
介绍:
-c 指定剪切的字符数
-f 指定剪切域数
-d 指定与空格和tab键不同的域分隔符
-c的格式为:
-c1,5-7 剪切第1个字符,然后是第5到第7个字符
-c1-50 剪切前50个字符
-f的格式与-c的格式相同:
-f1,5 剪切第1域,第5域。
-f1,10-12 剪切第1域,第10到12域。
下面测试一下:
修改pers文件为:
[root@localhost test]# cat pers
P.Jones:Office Runner:ID897
S.Round:UNIX admin:ID666
L.Clip:Personal Chief:ID982
以下的内容都是以":"作为域分隔符。
P.Jones:Office Runner:ID897
S.Round:UNIX admin:ID666
L.Clip:Personal Chief:ID982
a、剪切指定域:
[root@localhost test]# cut -d: -f1,3 pers
P.Jones:ID897
S.Round:ID666
L.Clip:ID982
b、剪切指定字符数P.Jones:ID897
S.Round:ID666
L.Clip:ID982
[root@localhost test]# cut -c1-5 pers
P.Jon
S.Rou
L.Cli
可以发现,在剪切指定域的时候要指出域分隔符,而剪切指定字符时不用。
P.Jon
S.Rou
L.Cli
paste用法:
cut用来从文本文件或标准输出中抽取数据列或者域,然后再用paste可以将这些数据粘贴起来形成相关文件。粘贴两
个不同来源的数据时,首先需将其分类,并确保两个文件行数相同。
paste将按行将不同文件行信息放在一行。缺省情况下,paste连接时,用空格或tab键分隔新行中不同文本,除非指
定 -d选项,它将成为域分隔符。
格式为:
paste -d -s file1 file2
解释:
-d 指定不同于空格或tab键的域分隔符。
-s 将每个文件合并成行来粘贴。
示例:
创建两个文件pas1:
[root@localhost test]# cat pas1
ID897
ID666
ID982
和文件pas2:
ID897
ID666
ID982
[root@localhost test]# cat pas2
P.Jones
S.Round
L.Clip
a、将两文件粘贴成两列:P.Jones
S.Round
L.Clip
[root@localhost test]# paste pas1 pas2
ID897 P.Jones
ID666 S.Round
ID982 L.Clip
注意,如上所示,默认用空格作为分隔域。还有就是pas1和pas2谁排前面就先粘贴谁,可以修改为:
ID897 P.Jones
ID666 S.Round
ID982 L.Clip
[root@localhost test]# paste pas2 pas1
P.Jones ID897
S.Round ID666
L.Clip ID982
b、逐个文件粘贴成行,使用-s选项,如:P.Jones ID897
S.Round ID666
L.Clip ID982
[root@localhost test]# paste -s pas1 pas2
ID897 ID666 ID982
P.Jones S.Round L.Clip
命令结果的的一行为文件pas1的内容,第二行为文件pas2的内容。
ID897 ID666 ID982
P.Jones S.Round L.Clip
split命令
作用:将大文件分割成小文件。格式为:
split -output_file-size input-filename output-filename
其中output_file-size是文本文件被分割的行数。
例如:
创建文件split1,内容为:
[root@localhost test]# cat split_1
this is line1
this is line2
this is line3
this is line4
this is line5
this is line6
现在按每个文件2行分割,命令为:
this is line1
this is line2
this is line3
this is line4
this is line5
this is line6
[root@localhost test]# split -2 split_1
然后查看文件,多了一下三个文件:xaa、xab、xac。
可以查看内容,例如:
[root@localhost test]# cat xaa
this is line1
this is line2
注意:默认以后分割出来的小文件的命名方式为x[aa]到x[zz],x为文件名首字母,[aa]、[zz]为文件名剩余部分顺序
this is line1
this is line2
字符组合。