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
分享到:
相关推荐
`sort`、`join`、`cut`、`paste`、`split`和`uniq`是Linux命令行中的一组强大工具,它们专门用于对文本文件进行排序、合并、切割、拼接、分割和去重等操作。下面将详细讲解这些工具的使用方法和应用场景。 1. `sort...
通过这些示例可以看出,`tr` 和 `sort` 都是非常强大的工具,可以帮助我们高效地处理文本文件中的数据。无论是简单的字符替换还是复杂的排序需求,这两个命令都能满足。熟练掌握它们的使用方法对于Linux系统的日常...
这个资源摘要信息主要介绍了 Linux 相关命令的详解,包括文本处理工具 awk、sed、grep、sort、uniq、cut、paste、join 等的语法规则、常用选项和示例应用。 awk 命令是Pattern Scanning and Processing Language,...
9. `split`:用于将一个大文件分割成多个小文件。`$ split -l 100 bigfile prefix` 会将 `bigfile` 按照每100行划分为多个以 `prefix` 开头的小文件。 这些命令在日常的Linux系统管理中非常常见,熟练掌握它们能极...
- `cut`和`paste`命令用于处理文本文件的列。 - `ln`命令创建硬链接和符号链接。 - `less`和`more`是文本查看器,`locate`用于快速定位文件路径。 - `mc`是Midnight Commander文件管理器的简称,提供图形化界面管理...
37. **split** - 将文件分割成较小的文件。 38. **tee** - 读取标准输入并写入文件。 39. **tmpwatch** - 清理临时文件。 40. **touch** - 修改文件的时间戳或创建空文件。 41. **umask** - 设置新建文件的默认权限...
8. **split**: 将文件分割成较小的文件。 - **用法**:`split [选项] [输入文件] [输出文件前缀]` - **说明**:将文件分成更小的部分。 9. **paste**: 合并文件内容。 - **用法**:`paste [选项] 文件` - **...
- 用途:用于更新文件的时间戳或创建新文件。 - 示例: ```bash touch newfile ``` 9. **basename & dirname** - 用途:basename用于提取文件名,dirname用于提取目录路径。 - 示例: ```bash basename /...
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_控制...
文件分类、合并和分割涉及到`sort`、`uniq`、`join`、`cut`、`paste`和`split`等命令,它们用于对文本数据进行排序、去除重复行、组合多文件、提取字段以及分隔大文件。 最后,`tr`命令用于字符转换和替换,它在...
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_控制流结构_...
- **功能说明**: 创建一个新文件或更新现有文件的访问和修改时间。 **14. tree** - **命令**: `tree [选项] [目录]` - **功能说明**: 以树状结构显示目录及其子目录的结构。 **15. basename** - **命令**: `...
- **split**: 将大文件分割成小文件。 - **paste**: 合并多个文件的列。 - **join**: 将两个文件的行根据指定列进行合并。 - **grep**: 在文件中搜索匹配的行。 - **uniq**: 过滤连续重复的行。 - **tr**: 转换或...
合并两个文件的行 link 创建从指定文件到指定名称的硬链接 ln 创建文件之间的硬/软(符号)连接 logname 显示当前用户的登录名 ls 列出指定目录的所有内容。缺省是将文件和子目录按字母顺序排列。 md5sum ...
- **split**: 将文件分割成不同的文件。 ### tr 用法 - **tr**: 用于替换或删除字符。 ### 登录环境 - **/etc/profile**: 系统级别的登录脚本。 - **$HOME/.profile**: 用户级别的登录脚本。 - **stty**: 用于控制...