`
kanwoerzi
  • 浏览: 1643410 次
文章分类
社区版块
存档分类
最新评论

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


分享到:
评论

相关推荐

    Linux学习笔记【博文整理系列】

    Linux笔记——命令:Sort,uniq,join,cut,paste,split Linux笔记——shell基础:变量&本地变量&位置变量&特定变量参数 Linux笔记——条件测试test Linux笔记——控制流 Linux笔记——shell补充:参数传递&函数等 Linux...

    linux sort join cut paste split uniq

    详细介绍linux下用于处理文本文件分类、合并、分割操作的工具 如:sort、uniq、join、cut、paste、split

    数据文件处理命令小结(tr,sort,cut,paste,join,uniq,split)

    数据文件处理命令小结(tr,sort,cut,paste,join,uniq,split),参数的使用说明和大量实例

    linux下uniq和sort命令用法详解.docx

    linux下uniq和sort命令用法详解.docx

    Linux sort,uniq,cut,wc命令详解

     sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序。  sort语法  [root@www~]# sort [-fbMnrtuk] ...

    Linux命令 sort、uniq、tr工具详解

    主要介绍了Linux命令 sort、uniq、tr工具详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    linux下uniq和sort命令用法.docx

    linux下uniq和sort命令用法.docx

    ls,cp等源码包Coreutils

    GNU Coreutils包括如下命令: [ date false ln paste sha1sum test vdir basename dd fmt logname pathchk shred touch wc cat df fold ls pinky sleep tr who chgrp dir groups md5sum pr sort true whoami chmod ...

    Linux课堂笔记.pdf

    一、操作系统概述 1、 操作系统 2、 不同应用利于的主流操作系统二、系统安装 1、安装VM虚拟机 ...2.8.6 sort命令 2.8.7 wc命令 2.8.8 uniq命令 2.8.9 tee命令 2.8.10 tr命令 2.8.11 split命令 2.8.12 awk命令

    LINUX处理文本命令

    LINUX处理文本命令 处理文本和文本文件的命令 一. sort 文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的字符位置, 对文件行进行排序. 使用-m选项, 它将会合并预排序的输入文件. 想...

    Shell中的sort和uniq命令

    Shell中的sort和uniq命令 sort :通常用来排序 uniq :通常对重复字符进行处理 sort -n sort -r sort -u 去重,u: unique(独一无二的) sort -o 指定输出文件 sort -t 指定分隔符 sort -k 指定列排序(配合-t使用) ...

    Linux 101 hacks (2nd)

    技巧25:cut 命令 技巧26:stat 命令 技巧27:diff 命令 技巧28:显示用户总的连接时间 第五章:PS1,PS2,PS3 和PROMPT_COMMAND 技巧29:PS1——默认提示符 技巧30:PS2——再谈提示符 技巧31:PS3——Shell 脚本中...

    linux 核心命令源码

    linux 核心命令源码(cp mv cat chgrp chown cut date df du echo env expand expr find force fs group head hostname join kill link ls mkdir mv nice od paste printf ptx rm selinux seq sleep sort split stat...

    leetcode中国-Split-words:拆分中文单词并计算它们的频率,使用stopwors

    uniq -c | sort -nr | awk ' {print $2" "$1} ' 结果应该是: —— :fire: 1.输入: ——需要分词。 —— 使用的停用词(英文和中文)。 —— :fire: 2.主文件: —— 主要执行代码。 —— :fire: 3.输出: ——言语...

    Linux Shell学习:uniq命令使用方法介绍

    uniq命令的作用:显示唯一的行,对于那些连续重复的行只显示一次! 本文将通过实践实例说明

    uniq命令 去除文件中的重复行

    uniq命令全称是“unique”,中文释义是“独特的,唯一的”。该命令的作用是用来去除文本文件中连续的重复行,中间不能夹杂其他文本行。去除了重复的,保留的都是唯一的,也就是独特的,唯一的了。 我们应当注意的是...

    linux命令c语言自己实现(大概40来个)

    自己学习《APUE》时写的linux下一些命令(大概40个左右)实现,仅当学习使用,这些命令包括cat cp echo head ls paste rmdir tail umask who chattr cut expand join mkdir pwd sed tee uniq chgrp date find last ...

    linux使用lsof命令查看文件打开情况

    主要给大家介绍了关于在linux中利用lsof命令如何查看文件打开情况的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

Global site tag (gtag.js) - Google Analytics