`
jaent
  • 浏览: 31453 次
  • 性别: 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

    `sort`、`join`、`cut`、`paste`、`split`和`uniq`是Linux命令行中的一组强大工具,它们专门用于对文本文件进行排序、合并、切割、拼接、分割和去重等操作。下面将详细讲解这些工具的使用方法和应用场景。 1. `sort...

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

    通过这些示例可以看出,`tr` 和 `sort` 都是非常强大的工具,可以帮助我们高效地处理文本文件中的数据。无论是简单的字符替换还是复杂的排序需求,这两个命令都能满足。熟练掌握它们的使用方法对于Linux系统的日常...

    Linux相关命令详解

    这个资源摘要信息主要介绍了 Linux 相关命令的详解,包括文本处理工具 awk、sed、grep、sort、uniq、cut、paste、join 等的语法规则、常用选项和示例应用。 awk 命令是Pattern Scanning and Processing Language,...

    Linux基础知识(8-10)-管线指令.pdf

    9. `split`:用于将一个大文件分割成多个小文件。`$ split -l 100 bigfile prefix` 会将 `bigfile` 按照每100行划分为多个以 `prefix` 开头的小文件。 这些命令在日常的Linux系统管理中非常常见,熟练掌握它们能极...

    Linux命令手册

    - `cut`和`paste`命令用于处理文本文件的列。 - `ln`命令创建硬链接和符号链接。 - `less`和`more`是文本查看器,`locate`用于快速定位文件路径。 - `mc`是Midnight Commander文件管理器的简称,提供图形化界面管理...

    Linux常用命令集

    37. **split** - 将文件分割成较小的文件。 38. **tee** - 读取标准输入并写入文件。 39. **tmpwatch** - 清理临时文件。 40. **touch** - 修改文件的时间戳或创建空文件。 41. **umask** - 设置新建文件的默认权限...

    运维必须熟练掌握的150个命令

    8. **split**: 将文件分割成较小的文件。 - **用法**:`split [选项] [输入文件] [输出文件前缀]` - **说明**:将文件分成更小的部分。 9. **paste**: 合并文件内容。 - **用法**:`paste [选项] 文件` - **...

    linux命令大全 例子演示

    - 用途:用于更新文件的时间戳或创建新文件。 - 示例: ```bash touch newfile ``` 9. **basename & dirname** - 用途:basename用于提取文件名,dirname用于提取目录路径。 - 示例: ```bash basename /...

    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基础十二篇打印美化版

    文件分类、合并和分割涉及到`sort`、`uniq`、`join`、`cut`、`paste`和`split`等命令,它们用于对文本数据进行排序、去除重复行、组合多文件、提取字段以及分隔大文件。 最后,`tr`命令用于字符转换和替换,它在...

    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_控制流结构_...

    Linux运维命令

    - **功能说明**: 创建一个新文件或更新现有文件的访问和修改时间。 **14. tree** - **命令**: `tree [选项] [目录]` - **功能说明**: 以树状结构显示目录及其子目录的结构。 **15. basename** - **命令**: `...

    redhat Linux命令大全

    - **split**: 将大文件分割成小文件。 - **paste**: 合并多个文件的列。 - **join**: 将两个文件的行根据指定列进行合并。 - **grep**: 在文件中搜索匹配的行。 - **uniq**: 过滤连续重复的行。 - **tr**: 转换或...

    coreutils-8.32.tar.gz

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

    LINUX 与 UNIX SHELL编程指南

    - **split**: 将文件分割成不同的文件。 ### tr 用法 - **tr**: 用于替换或删除字符。 ### 登录环境 - **/etc/profile**: 系统级别的登录脚本。 - **$HOME/.profile**: 用户级别的登录脚本。 - **stty**: 用于控制...

Global site tag (gtag.js) - Google Analytics