`
jaent
  • 浏览: 30738 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sort,uniq,join,cut,paste,split-文件分类合并和分割(持续更新)

阅读更多
linux-shell-sort,uniq,join,cut,paste,split-文件分类合并和分割
转自http://hi.baidu.com/yuhfurrudzkmuve/item/2af7801015b9bf0e8fbde4c9
sort

    排序
        -c 测试文件是否已经分类。
        -m 合并两个分类文件。
        -u 删除所有复制行。
        -o 存储sort结果的输出文件名
        -b 使用域进行分类时,忽略第一个空格。
        -n 指定分类是域上的数字分类。
        -t 域分隔符;用非空格或t a b键分隔域。
        -r 对分类次序或比较求逆。
        +n n为域号。使用此域号开始分类。
        n n为域号。在分类比较时忽略此域,一般与+ n一起使用。
        post1 传递到m,n。m为域号,n为开始分类字符数;例如4,6意即以第5域分类,从第7个字符开始

    反序
    sort -t: -r video.txt

    去除重复行
    sort -u video.txt

    同时处理多个文件
    cat file1 file2 file3 | sort > outfile
    sort -m file1 file2 file3 > outfile


    1、sort特点:当查阅注册文件或为另一用户对下载文件重排文本列时方便。
 
    2、sort选项:
    sort命令一般格式:
    sort -cmu -o output_file [other options] +pos1 +pos2 input_files
 
    sort的参数:
    -c 测试文件是否已经分类。
    -m 合并两个分类文件。
    -u 删除所有复制行。
    -o 存储sort结果的输出文件名。
    -b 使用域进行分类时,忽略第一个空格。
    -n 指定分类是域上的数字分类。
    -t 域分隔符;用非空格或t a b键分隔域。
    -r 对分类次序或比较求逆。
    +n n为域号。使用此域号开始分类。
    n n为域号。在分类比较时忽略此域,一般与+n一起使用。
    post1 传递到m,n。m为域号,n为开始分类字符数;

    3、保存输出
    1)-o选项保存分类结果
    2)重定向方法

    4、sort启动方式
    sort执行时,先查看是否为域分隔设置了-t选项,如果设置了,则使用它来将记录分隔成域0、域1等等;
    如果未设置,用空格代替。缺省时sort将整个行排序.

    5、sort对域的参照方式
    注意:这里说的域和前面AWK一样是列的意思。
    注意:第一个域作为域0,域1是第二个域

    6、文件是否已分类
    使用sort -c filename 查看

    7、sort分类求逆
    逆向sort结果,使用- r选项

    8、按指定域分类
    $sort -t: t1 video.txt
    按第2域进行分类。

    9、数值域分类
    用- n选项
    $sot -t: t3n video.txt
    注意:数值域(即是数字格式的),即为数值分类

    10、唯一性分类
    - u选项进行唯一性
    $sot -u video.txt

    11、使用k的其他sort方法
    其他选项也可以使用k,主要用于指定分类域开始的字符数目
    $sort -t: -k4 video.txt
    使用k做分类键排序
    先以第4域,再以第1域分类,命令为-k4 -k1,
    $sort -t: -r -k4 -k1 video.txt

    12、指定sort序列
    sort +0 -2 +3
    该命令意即开始以域0分类,忽略域2,然后再使用域3分

    13、pos用法
    指定开始分类的域位置,另外一种方法:
    sort +field_number .characters_in
    意即从ield_number开始分类,但是要在此域的第characters_in个字符开始。
    $sort -t: +1.2 video.txt
    +1.2,意即以第1域最左边第3个字符开始分类.

    14、使用head和tail将输出分类
    显示部分结果的作用
    $sort -t: -r -K4 video.txt | head -1
    只显示一行。
    $sort -t: -r -K4 video.txt | tail -1
    只显示最后一行。
    使用head或tail时想省略显示行数,缺省时显示10行
    $head -20 filename
    显示前20行。
    $tail -6 filname
    显示后6行。

    15、awk使用sort输出结果
    可以为输出的结果加上一些头和尾等信息。

    16、将两个分类文件合并
    格式:sort -m sorted_file1 sorted_file2
    使用-m +o。将这个文件并入已存在的分类文件

    17、系统sort
    sort可以用来对/etc/passwd文件中用户名进行分类
    以第1域即注册用户名分类,然后管道输出结果到awk,awk打印第一域。
    $sort /etc/passwd | sort -t: +0 | awk -F":" '{print $1}'

    用于d f命令,以递减顺序打印使用列
    $df | sort -b -r +4
    用- b选项,忽略分类域前面的空格
    域4(+ 4),即容量列将分类求逆

    排序IP,分隔点是.
    $sort -t. +3n iplist


uniq

    uniq用来从一个文本文件中去除或禁止重复行
    uniq里意即持续不断重复出现的行,中间不夹杂任何其他文本
    注意:和前面的sort -u 不同。
 
    格式:
    uniq [选项] inputfile outputfile
 
    选项:
    -u 只显示不重复行。
    -d 只显示有重复数据行,每种重复行只显示其中一行
    -c 打印每一重复行出现次数。
    -f n为数字,前n个域被忽略。
    一些系统不识别- f选项,这时替代使用- n。


join

    (类似SQL中的Join)
    join用来将来自两个分类文本文件的行连在一起

    格式:
    join [optinos] inputfile1 inputfile2

    an   n 为一数字,用于连接时从文件n中显示不匹配行。
    o n.m   n为文件号,m为域号。1. 3表示只显示文件1第三域,每个n,m必须用逗号分隔,如1 . 3,2 . 1。
    j n m    n为文件号,m为域号。使用其他域做连接域。
    t    域分隔符。用来设置非空格或t a b键的域分隔符。

    1) 不匹配连接
    $join -a1 file1 file2

    2)选择性连接
    使用- o选项选择连接域
    $join -o 1.1,2.2 file1 file2

    使用-jn m进行其他域连接,例如用文件1域3和文件域2做连接键
    join -j1 3 -j2 2 file1 file2


cut

    cut用来从标准输入或文本文件中剪切列或域,剪切文本可以将之粘贴到一个文本文件。
 
    cut一般格式为:
    cut [options] file1 file2

    可用选项:
    -c list   指定剪切字符数。
    -f field 指定剪切域数。
    -d    指定与空格和tab键不同的域分隔符。
    -c   用来指定剪切范围,如下所示:-c1,5-7 剪切第1个字符,然后是第5到第7个字符。
    -f    格式与- c相同,剪的是域。即列
    -f 1,5 剪切第1域,第5域。
    -f 1,10-12 剪切第1域,第1 0域到第1 2域。

    1)使用域分隔符
        $cut -d: -f3 file
 
    2)剪切指定域
    从文件/etc/passwd中剪切注册名及缺省根目录,需抽取域1和域6:
        $cut -d: -f1,6 /etc/passwd


paste

    粘贴

    paste -d -s -file1 file2
            -d 指定不同于空格或t a b键的域分隔符。例如用@分隔域,使用- d @。
            -s 将每个文件合并成行而不是按行粘贴。
            - 使用标准输入。例如ls -l |paste ,意即只在一列上显示输出

    paste可以将这些数据粘贴起来形成相关文件
    粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相同。
    缺省情况下, paste连接时,用空格或tab键分隔新行中不同文本,除非指定- d选项
 
    paste格式为;
    paste -d -s -file1 file2
 
    选项含义如下:
    -d 指定不同于空格或t a b键的域分隔符。例如用@分隔域,使用- d @。
    -s 将每个文件合并成行而不是按行粘贴。
    - 使用标准输入。例如ls -l |paste ,意即只在一列上显示输出。
 
    1)指定列
    通过交换文件名即可指定哪一列先粘
 
    2)paste命令管道输入
    以一个4列格式显示目录列表,使用空格作域分隔符
    $ls /etc | paste -d" " - - - -
 
    3)要合并两行,而不是按行粘贴,可以使用- s选项


split

    分割
    split -output_file-size input-filename output-filename

    split用来将大文件分割成小文件
    s p l i t命令一般格式:
    split -output_file-size input-filename output-filename
    -output_file-size指的是文本文件被分割的行数
    最多1000行分割
    每个文件格式为x [aa]到x[zz],x为文件名首字母[可以自己定], [aa]、[zz]为文件名剩余部分顺序字符组合。
    后面是按aa ab ac 这样的顺序来的。


head,tail

    头 10 行发送至标准输出
    尾 10 行发送至标准输出


tac

    逆序排序文件
    tac 由 cat 逆序拼写而成

    ls -l |tail | tac
分享到:
评论

相关推荐

    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),参数的使用说明和大量实例

    shell基础十二篇

    []等)shell基础5:输入/输出(echo,read,cat,管道,tee,重定向等)shell基础8:文本过滤工具(grep) shell基础9:awk 64 shell基础10:sed 94 Shell基础11:文件分类、合并和分割(sort,uniq,join,cut,paste,...

    Linux shell脚本 精华中文版

    011_合并与分割_sort_join_uniq_cut_paste_split.pdf 012_tr的用法.pdf 013_登录环境.pdf 014_环境和shell变量.pdf 015_引号.pdf 016_基础shell编程_shell脚本介绍.pdf 017_条件测试_test_expr.pdf 018_控制...

    shell 编程(中文)[pdf]

    011_合并与分割_sort_join_uniq_cut_paste_split.pdf 012_tr的用法.pdf 013_登录环境.pdf 014_环境和shell变量.pdf 015_引号.pdf 016_基础shell编程_shell脚本介绍.pdf 017_条件测试_test_expr.pdf 018_控制流结构_...

    coreutils-8.32.tar.gz

    合并两个文件的行 link 创建从指定文件到指定名称的硬链接 ln 创建文件之间的硬/软(符号)连接 logname 显示当前用户的登录名 ls 列出指定目录的所有内容。缺省是将文件和子目录按字母顺序排列。 md5sum ...

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

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

    Linux与unix shell编程指南(1-16)

    11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 11.6.1 指定列 116 11.6.2 使用不同...

    LINUX与UNIX_Shell编程指南(上)

    11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 11.6.1 指定列 116 11.6.2 使用不同...

    ls,cp等源码包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 dircolors head mkdir printenv...

    shell教程-30章,下了之后会让你大吃一惊,相当好

    11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 11.6.1 指定列 116 11.6.2 使用不同...

    LINUX 与 UNIX SHELL编程指南

    11.1.18 将两个分类文件合并 110 11.2 系统 sort 110 11.3 uniq 用法 111 11.4 join 用法 112 11.5 cut 用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste 用法 116 11.6.1 指定列 116 ...

    linux shell 编程教程

    11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 11.6.1 指定列 116 11.6.2 使用不同...

    shell 编程指南pdf

    11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 11.6.1 指定列 116 11.6.2 使用不同...

    LINUX与UNIX SHELL编程指南(很全)

    11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 11.6.1 指定列 116 11.6.2 使用不同...

    shell编程和unix命令

    2.1.7 查找比某个文件新或旧的文件 17 2.1.8 使用type选项 17 2.1.9 使用size选项 18 2.1.10 使用depth选项 18 2.1.11 使用mount选项 18 2.1.12 使用cpio选项 18 2.1.13 使用exec或ok来执行shell命令 ...

    Linux与unix shell编程指南

    11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 11.6.1 指定列 116 11.6.2 使用不同...

    linux与unix shell 编程(下)

    11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 11.6.1 指定列 116 11.6.2 使用不同...

    LINUX与UNIX SHELL编程指南.rar

    11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 11.6.1 指定列 116 11.6.2 使用不同...

Global site tag (gtag.js) - Google Analytics