cut paste tr sort wc uniq join
awk sed 因为比较复杂,这里不做单独介绍
--------------------------------------------------------------------
1,cut 字符分割,处理文件,仅作展示,不会保存结果
-d, --delimiter=分界符使用指定分界符代替制表符作为区域分界
-f, --fields=LIST select only these fields; also print any line
cut -d (分隔符(若分隔符为空格 ‘ ’)) -f (分割后的编号)
exmaple1::显示用户名
# cut -d : /etc/passwd -f 1
-c, --characters=列表只选中指定的这些字符
cut -c (字符范围)
example2:去用户名的2和4字符
#cut -c 2,4 /etc/passwd
其他,取值范围
N从第1 个开始数的第N 个字节、字符或域
N-从第N 个开始到所在行结束的所有字符、字节或域
N-M从第N 个开始到第M 个之间(包括第M 个)的所有字符、字节或域
-M从第1 个开始到第M 个之间(包括第M 个)的所有字符、字节或域
---------------------------------------------------------------------
2,paste 多行合并
example3:
# more name age
::::::::::::::
name
::::::::::::::
tom
jack
lili
::::::::::::::
age
::::::::::::::
18
19
20
example4:
# paste name age
tom18
jack19
lili20
-d, --delimiters=列表改用指定列表里的字符替代制表分隔符
example5:
[root@centos65-22 ~]# paste -d : name age
tom:18
jack:19
lili:20
-s, --serial不使用平行的行目输出模式,而是每个文件占用一行
[root@centos65-22 ~]# paste -s name
tomjacklili
----------------------------------------------------------------------------------
3,tr 替换、缩减和/或删除字符
examp6:
[root@centos65-22 ~]# cat mytest |tr 'a' 'A' && cat mytest
AAA bbb:ccc
ddd eee:fff
aaa bbb:ccc
ddd eee:fff
tr 'a' 'A' 将小写a转换为大写A
tr '()' '[]' 将小括号转为中括号
tr '[a-z]' '[A-Z]' 小写转大写
tr '\n' ' ' 换行转空格
tr -s 'aaa' 'a' 将多个字符a转换为一个字符a
tr -d 'aaa' 删除aaa
tr -d '[0-9]' 删除所有数字
examp7:
[root@centos65-22 ~]# cat age |tr '[0-9]' '[5-9 0-4]' && cat age
62
63
75
18
19
20
备注:
\NNN八进制值为NNN 的字符(1 至3 个数位)
\\反斜杠
\a终端鸣响
\b退格
\f换页
\n换行
\r回车
\t水平制表符
\v垂直制表符
字符1-字符2从字符1 到字符2 的升序递增过程中经历的所有字符
[字符*]在SET2 中适用,指定字符会被连续复制直到吻合设置1 的长度
[字符*次数]对字符执行指定次数的复制,若次数以 0 开头则被视为八进制数
[:alnum:]所有的字母和数字
[:alpha:]所有的字母
[:blank:]所有呈水平排列的空白字符
[:cntrl:]所有的控制字符
[:digit:]所有的数字
[:graph:]所有的可打印字符,不包括空格
[:lower:]所有的小写字母
[:print:]所有的可打印字符,包括空格
[:punct:]所有的标点字符
[:space:]所有呈水平或垂直排列的空白字符
[:upper:]所有的大写字母
[:xdigit:]所有的十六进制数
[=字符=]所有和指定字符相等的字符
--------------------------------------------------------------------------------
4,sort 排序
-b, --ignore-leading-blanks忽略前导的空白区域
-d, --dictionary-order只考虑空白区域和字母字符
-f, --ignore-case忽略字母大小写
-g, --general-numeric-sort按照常规数值排序
-i, --ignore-nonprinting只排序可打印字符
-M, --month-sort比较 (未知) < "一月" < ... < "十二月"
在LC_ALL=C 时为(unknown) < `JAN' < ... < `DEC'
-h, --human-numeric-sort 使用易读性数字(例如: 2K 1G)
-n, --numeric-sort根据字符串数值比较
-R, --random-sort根据随机hash 排序
--random-source=文件从指定文件中获得随机字节
-r, --reverse逆序输出排序结果
--sort=WORD按照WORD 指定的格式排序:
一般数字-g,高可读性-h,月份-M,数字-n,
随机-R,版本-V
-V, --version-sort在文本内进行自然版本排序
其他选项:
--batch-size=NMERGE一次最多合并NMERGE 个输入;如果输入更多
则使用临时文件
-c, --check, --check=diagnose-first检查输入是否已排序,若已有序则不进行操作
-C, --check=quiet, --check=silent类似-c,但不报告第一个无序行
--compress-program=程序使用指定程序压缩临时文件;使用该程序
的-d 参数解压缩文件
--files0-from=文件从指定文件读取以NUL 终止的名称,如果该文件被
指定为"-"则从标准输入读文件名
-k, --key=位置1[,位置2]在位置1 开始一个key,在位置2 终止(默认为行尾)
-m, --merge合并已排序的文件,不再进行排序
-o, --output=文件将结果写入到文件而非标准输出
-s, --stable禁用last-resort 比较以稳定比较算法
-S, --buffer-size=大小指定主内存缓存大小
-t, --field-separator=分隔符使用指定的分隔符代替非空格到空格的转换
-T, --temporary-directory=目录使用指定目录而非$TMPDIR 或/tmp 作为
临时目录,可用多个选项指定多个目录
-u, --unique配合-c,严格校验排序;不配合-c,则只输出一次排序结果
-z, --zero-terminated以0 字节而非新行作为行尾标志
example8:按年龄进行排序
[root@centos65-22 ~]# paste -d : name age |sort -t ':' -k2
tom:18
jack:19
lili:20
example9:按年龄进行排序(倒序)
[root@centos65-22 ~]# paste -d : name age |sort -t ':' -k2 -r
lili:20
jack:19
tom:18
--------------------------------------------------------------------------------
5,wc 统计
-c, --bytes输出字节数统计
-m, --chars输出字符数统计
-l, --lines输出行数统计
--files0-from=文件从指定文件读取以NUL 终止的名称,如果该文件被
指定为"-"则从标准输入读文件名
-L, --max-line-length显示最长行的长度
-w, --words显示单词计数
example10:
[root@centos65-22 ~]# cat /etc/passwd |wc
29 45 1330
行数 单词数 字节数
--------------------------------------------------------------------
6,uniq 去重复行
-c, --count在每行前加上表示相应行目出现次数的前缀编号
-d, --repeated只输出重复的行
-D, --all-repeated[=delimit-method显示所有重复的行
-f, --skip-fields=N比较时跳过前N 列
-i, --ignore-case在比较的时候不区分大小写
-s, --skip-chars=N比较时跳过前N 个字符
-u, --unique只显示唯一的行
-z, --zero-terminated使用'\0'作为行结束符,而不是新换行
-w, --check-chars=N对每行第N 个字符以后的内容不作对照
example11:
--------------------------------------------------------------------------
7,join 连接文本中内容相同的行
左连接(left join, 左外连接, left outer join) 格式:join -a1 <FILE1> <FILE2>
右连接(right join, 右外连接,right outer join) 格式:join -a2 <FILE1> <FILE2>
全连接(full join, 全外连接, full outer join) 格式:join -a1 -a2 <FILE1> <FILE2>
指定分隔符:
-t <CHAR>
example12:
[root@centos65-22 ~]# more name age
::::::::::::::
name
::::::::::::::
1 tom
2 jack
3 lili
::::::::::::::
age
::::::::::::::
1 18
2 19
3 20
[root@centos65-22 ~]# join name1 age1
1 tom 18
2 jack 19
3 lili 20
转载于:https://blog.51cto.com/iterblog/1355106