Linux笔记——命令:Sort,uniq,join,cut,paste,split

列表:

Linux笔记——vim常用操作及扩展补充[手册]

Linux笔记——linux常用命令集合

Linux笔记——命令:awk

Linux笔记——命令:sed

Linux笔记——命令:grep

Linux笔记——命令:find

Linux笔记——命令:Sort,uniq,join,cut,paste,split

Linux笔记——shell基础:变量&本地变量&位置变量&特定变量参数

Linux笔记——条件测试test

Linux笔记——控制流

Linux笔记——shell补充:参数传递&函数等

Linux笔记——正则表达式入门及应用

Linux笔记——linux进程

Linux笔记——SVN命令总结

rpm&yum包管理命令总结

鉴于博客,表格&排版&颜色标记等等无法显示,大家可以下载这个笔记的资源

12个文档,不需要积分,以目录+表格+颜色标记形式

下载资源地址http://download.csdn.net/detail/wklken/3815477

The end! Thx! wklken的笔记

-----------------------------------------------

对csdn博客的表格表示——真TMD蛋疼................显示异常丑陋,大家还是复制贴到word文档吧,稍后会将整个系列的文档发到资源里免费供大家下载

命令:sort

Sort可将许多不同的域按不同的列顺序分类

sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出

格式:

sort –cmu –o out-putfile [other options] *pos1 *pos2 input-files

选项:

-c 测试文件是否已经分类,如果乱序,则输出第一个乱序的行的相关信息,最后返回1

-m 合并两个分类文件

-u 删除所有复制行

-o 存储sort结果的输出文件名

【sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,但是如果你想把排序结果输出到原文件中,用重定向可就不行了。-o就可以解决这个问题了】

-b 使用域进行分类是,忽略首个空格【会忽略每一行前面的所有空白部分,从第一个可见字符开始比较】

-n 指定分类是域上数字分类【默认使用字符排序的,若是要数字,使用-n】

-t 域分隔符;默认 空格,tab,可

-r 对分类次序或比较求逆【默认是升序】

+n n为域号,使用此域开始分类

n n为域号,在分类比较时忽略此域,一般与+n一起使用

post m,n 传递到m,n,m为域号,n为开始分类字符数

sort –k2 按照第二个域进行排序

【sort [-t delimiter][+filed[column]] [option]】

【常用组合 –t ‘分隔符’ -kn】

-k选项的语法格式,如下:

[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]

这个语法格式可以被其中的逗号(“,”)分为两大部分,Start部分和End部分。

先给你灌输一个思想,那就是“如果不设定End部分,那么就认为End被设定为行尾”。这个概念很重要的,但往往你不会重视它。

Start部分也由三部分组成,其中的Modifier部分就是我们之前说过的类似n和r的选项部分。我们重点说说Start部分的FStart和C.Start。

C.Start也是可以省略的,省略的话就表示从本域的开头部分开始。之前例子中的-k 2和-k 3就是省略了C.Start的例子喽。

FStart.CStart,其中FStart就是表示使用的域,而CStart则表示在FStart域中从第几个字符开始算“排序首字符”。

同理,在End部分中,你可以设定FEnd.CEnd,如果你省略.CEnd,则表示结尾到“域尾”,即本域的最后一个字符。或者,如果你将CEnd设定为0(零),也是表示结尾到“域尾”。

常用示例:

1. 保存输出

$sort –o result sortfile

$sort sortfile > result

Sort的启动方式,sort认为一空格/多空格为分隔符,要加入其他的,必须使用-t,执行时,先查看-t,若是有,使用其进行分割,若是无,使用空格

2. 查看文件是否已排序

$sort –c sortfile

若未排序,输出信息 $?=1

若已排序,无信息输出$?=0

3. 使用其他分隔符

$sort –t : sortfile

4. 排完序后求逆

$sort –t : -r sortfile

5. 唯一分类,原文件中重复行去除

$sort –u sortfile

6. 指定分类域,1开始

$sort –t : -k 4 sortfile 【第四个域开始】

$sort –t : -k 4 –k 1 sortfile

【sort分隔符+ -k指定列 完成根据某列进行排序】

7. 指定sort序列

$sort +0 -2 +3 sortfile

8. 将两个分类文件合并

$sort –m sorted-file1 sorted_file2

【将两个已排序文件整合,类似合并排序的后半部分】

命令:tr

tr

用来从标准输入中通过替换/删除进行字符转换【不接受指定的文件参数,而只是对标准输入进行翻译】

主要用于删除文件中的控制字符或进行字符转换

使用时,提供两个字符串,串1:用于查询,串2:用于处理各种转换;串1的字符被映射到串2上,然后转换开始

主要用途:

1.大小写转换

2.去除控制字符

3.删除字符

格式:

tr –c –d –s [“str_from”] [“str_to”] file

tr –选项 源 目标 输入文件 【即读取文件,将 源->目标】

选项

-c,用字符串1中字符集的补集替换此字符集,要求字符集为ASCII

-d,删除字符串中所有指定字符串

tr –d “:” < testfile

-s,删除所有str_from重复出现字符序列,只保留一个,即重复字符串压缩为一个

【一个很经典的应用就是把不规律的空格缩减为一个空格】

字符范围——tr,可以指定字符串列表或范围作为形成字符串的模式,似正则,但不是正则。

[a-z] [A-Z] [0-9] /octal一个三位八进制数,对应有效ASCII字符

[s*n]字符s出现n次

tr 中特定字符的不同表达方式

\a

Ctrl-g铃声

\007

\b

Ctrl-h退格

\010

\f

Ctrl-l走纸模式

\014

\n

Ctrl-J新行

\012

\r

Ctrl-M回车

\015

\t

Ctrl-I tab键

\011

\v

Ctrl-x

\030

tr中表示集合的符号

[:alnum:]

所有字母字符与数字

[:alpha:]

所有字母字符

[:blank:]

所有水平空格

[:cntrl:]

所有控制字符

[:digit:]

所有数字

[:graph:]

所有可打印的字符(不包含空格符)

[:lower:]

所有小写字母

[:print:]

所有可打印的字符(包含空格符)

[:punct:]

所有标点字符

[:space:]

所有水平与垂直空格符

[:upper:]

所有大写字母

[:xdigit:]

所有16 进位制的数字

常用示例:

1. 去除所有重复字符【只保留一个】

$tr –s “[a-z]” < oops.txt

2. 去除空行

$tr –s “[\012]” <oops.txt

$tr –s “[\n]” <oops.txt

$tr –s “\n” <oops.txt

3. 小写转大写

$echo “AbcdefG” | tr “[a-z]” “[A-Z]”

$echo “AbcdefG” | tr “[:lower:]” “[:upper:]”

4. 删除指定字符串

$tr –cs “[a-z][A-Z]” “[\012*]” < data.txt

将非字母字符转为新行 -s压缩重复的字符

5. 转换控制字符

$tr –s “[\136]” “[\011*]” < start.txt

6. 快速转换

$tr –s “[\r]” “[\n]” < input.txt

7. 匹配多于一个字符

$tr “[0*4]” “*”< input.txt

【需补充*和重复的部分】

Tr SET1 SET2

tr里面包含SET1和SET2,那如果出现两个集合的大小不同的情况,tr如何处理呢?

如果SET1>SET2, SET1中多出来的字符都会和SET2中最后一个字符相对应。

如果SET1<SET2,SET2中多余的部分将被抛弃

命令:uniq

Uniq

从文本文件中去除或禁止重复行,一般uniq假定文件已分类排序,并且结果正确[sort –u唯一性选项去除所有的重复行]

Uniq中重复行指持续不断重复出现的行

格式:

uniq –udc –f input-file output-file

选项:

-u 只显示不重复行 unique,唯一

-d 只显示有重复的行,每种重复显示一行

-I 忽略大小写

-c打印每一重复行出现的次数【计数】

-f n为数字,前n个域被忽略

常用示例

1.只显示非重复行

$uniq –u sortfile

2.提取非重复行到某个文件

$uniq –u sortfile result

3.只显示重复行

$uniq –d sortfile

4.打印重复行及其出现的次数

$uniq –c sortfile

5.忽略比较指定列

$uniq –f2 parts.txt

命令:join

join【这个需要找习题练下】

将来自两个分类文本文件的行连在一起

前提 :file1,file2已分类

每个文件都有一些元素与另一文件相关——连

有点像求并集

注:joio时文本域要少于20=

格式:

join [options] input-file input-file2

选项:

an n为数字,用于连接时从文件n中显示不匹配行,-a1表示第一个文件的不匹配行

o n,m n为文件号,m为域号, 1,3 表示只显示文件1的第三域

j n m n为文件号,m为域 使用其他域做连接域

t 域分隔符 用来设置非空格/非tab分隔符

常用示例:

1. 连接两个文件[默认连接域为域0]

$Join name.txt. town.txt

2. 显示第一个文件的不匹配行

$join –a1 name.txt town.txt

3. 设置显示连接结果

$join –o 1.1,2.2 name.txt town.txt

第一个文件第一个域和第二个文件第二个域作为显示结果

4. 设置连接域

$join –j 1 3 –j 2 2 file1 file2

命令:cut

Cut:

用来从标准输入或文本文件中剪切列或域【提取文本列】

可将剪切到的文本贴到另一个文件中

格式:

cut [options] file1 file2

选项:

b 字节

-c list 指定剪切字符数

-d 指定与空格/tab不同的分隔符

-c 指定剪切的字符范围,字符,如-c 1,5,7 第1,5,6,7字符 -c 1-50 前50个字符

-f 指定剪切的域范围 -f 1,5 剪切1,5两个域 -f 1,10-12 剪切1,10,11,12四个域

【一般组合为 –d ‘分隔符’ –f 域NO】

【另一组合-c】

常用示例:

-使用域分隔符

$cut –d : -f3 data

1. 剪切指定域

$cut –d : -f1,3 data

2. 剪切字符

$who –u | cut –c 1-8

命令:paste

paste

该命令主要用来将多个文件的内容合并,与cut命令完成的功能刚好相反,Paste将数据贴到相关文件中

存在两个不同来源 数据应先分类,确保文件行数同

功能说明:合并文件的列

补充说明:paste指令会把每个文件以列对列的方式,一列列地加以合并

格式:

paste [-s][-d <间隔字符>][--help][--version][文件...]

选项:

-d 指定不同分隔符,默认分隔符为tab

-s 将每个文件合并成行而不是按行黏贴,文件A一行,文件B一行

常用示例

File1

1

2

File2

A

B

1. 合并之 【默认分隔符是tab】

$paste file1 file2

1 A

2 B

2. 指定分隔符

$paste –d: file2 file1

A:1

B:2

3. 合并两行,而非按行黏贴

$paste –s file1 file2

1 2

A B

命令:split

split

用来将文件切分为小文件

格式:

split –output_file_size input_filename output_filename

其中out_file_size为被分割行数,默认1000


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值