cut命令
cut - 在文件的每一行中提取片断
在每个文件FILE的各行中,把提取的片断显示在标准输出
语法:
cut [参数] [数值区间] 文件
-b 以字节为单位分割
-n 取消分割多字节字符,与-b一起用
-c 以字符为单位
-d 自定义分隔符,默认以tab为分隔符
-f 与-b一起使用,指定显示哪个区域
N 第N个字节,字符或字段,从1计数起
N- 从第N个字节,字符或字段直至行尾
N-M 从第N到第M(并包括 第M)个字节,字符或字段
-M 从第一个到第M(并包括 第M)个字节,字符或字段
案例
1.截取每一行的第4个字符
cut -c 4 test.txt
2.截取4到6个字符
cut -c 4-6 test.txt
3.截取第5和第7个字符
cut -c 5,7 test.txt
4.截取一个范围的字符,如第四个到结尾
cut -c -6 test.txt
5.截取一个范围的字符,如开头到第六个字符
cut -c -6 test.txt
6.指定分隔符号,进行截取
cut -d ":" -f 区域范围 test.txt
找出第三个区域的内容
cut -d ":" -f 3 test.txt
找出开头到第三个区域的内容
cut -d ":" -f -3 test.txt
sort排序命令
sort命令将输入的文件内容按照规则排序,然后输出结果
用法:sort [选项]... [文件]...
或:sort [选项]... --files0-from=F
串联排序所有指定文件并将结果写道标准输出。
-b --ignore-leading-blank 忽略前导的空白区域
-n --numeric-sort 根据字符串数值比较
-r --reverse 逆序输出排序结果
-u --unique 配合-c,严格校验排序;不配合-c,则只输出一次排序结果
-t --field-separation=分隔符 使用指定的分隔符代替非空格到空格的转换
-k --key=位置1 [,位置2] 在位置1开始一个key,在位置2终止(默认为尾行)
案例
1.对文件第一个字符进行排序,默认从小到大
sort -n file.txt
2.对排序结果反转,从大搭配小排序
sort -n -r file.txt
3.对排序结果去重
sort -u file.txt
4.指定分割符号,指定区域进行排序,从小到大排序
sort -n -t "," -k 4 ip.txt
uniq命令
uniq命令可以输出或者忽略文件中的重复行,常与sort排序结合使用
用法:uniq [选项]... [文件]
从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或者标准输出。
不附加任何选项时匹配将在首次出现处被合并
-c --count 在每行前加上表示相应行目出现次数的前缀编号
-d --repeated 只输出重复的行
-u --unique 只显示出现过一次的行,注意了,uniq的只出现过一次,是针对-c统计之后的结果
案例
1.去除连续的重复行
uniq test.txt
2.结合sort使用,去重更精准
sort -n test.txt | uniq #先排序再去重
3.统计每一行重复的次数
sort -n test.txt | uniq -c
4.只找出文件中重复的行,且统计出现次数
sort -n test.txt | uniq -d -c
5.找出只出现过一次的行
sort -n test.txt | uniq -c -u
wc命令
wc命令用于统计文件的行数,单词,字节数
-c --bytes 打印字节数
-m --chars 打印字符数
-l --lines 打印行数
-L --max-line-length 打印最长行的长度
-w --words 打印单词数
案例
1.统计文件的行数
[root@timy-test-k8s01 ~]# wc -l test.txt
11 test.txt2.统计单词的数量
[root@timy-test-k8s01 ~]# echo "jimmy brade duke timy anny zoe" | wc -w
63.打印字符数
[root@timy-test-k8s01 ~]# echo "timy" | wc -m
5[root@timy-test-k8s01 ~]# echo "timy" | cat -E #进行验证思想
timy$#为什么timy字符是5个?而不是4个呢?,因为字符串的结尾有一个$符。
4.输出最长行的字符数
[root@timy-test-k8s01 ~]# cat test.txt | wc -L
45.统计系统中有多少登录
[root@timy-test-k8s01 ~]# who | wc -l
1 #1个用户登录系统
tr命令
tr命令从标准输入中替换、缩减或者删除字符,将结果写入到标准输出
用法:tr [选项]... SET1 [SET2]
从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。
字符集1:指定要转换或删除的原字符集。
当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集。
但执行删除操作时,不需要参数“字符集2”;
字符集2:指定要转换成的目标字符集。
-c或--complerment: 取代所有不属于第一字符集的字符;
-d或--delete: 删除所有属于第一字符集的字符;
-s或--squeeze-repeats: 把连续重复的字符以单独一个字符表示;
-t或--truncate-set1: 先删除第一字符集较第二字符集多出的字符。
案例
1.替换标准输入中的大写
[root@timy-test-k8s01 ~]# echo "my name is alex"
my name is alex
[root@timy-test-k8s01 ~]# echo "my name is alex" | tr '[a-z]' '[A-Z]'
MY NAME IS ALEX #将小写字母替换成大写2.使用-d删除参数
[root@timy-test-k8s01 ~]# echo "my name is alex and i am 999 years old" | tr -d 'a-z'
999 #删除字母
[root@timy-test-k8s01 ~]# echo "my name is alex and i am 999 years old" | tr -d 'a'
my nme is lex nd i m 999 yers old #删除a字母
[root@timy-test-k8s01 ~]# echo "my name is alex and i am 999 years old" | tr -d '0-9'
my name is alex and i am years old #删除数字3.把文件当做标准输入进行字符替换
[root@timy-test-k8s01 ~]# tr 'a' 'A' < alex.txt
my nAme is Alex. #替换文件中的小写字母为大写