cut
新建文件:
vim 1.txt
111:aaa:bbb:ccc
222:ddd:eee:fff
333:ggg:hhh
444:iii
截取
cat 1.txt | cut -c 1
练习一:截取出1.txt文件中前2行的第5个字符
head -2 1.txt | cut -c 5
练习二:截取出1.txt文件中前2行以”:”进行分割的第1,2段内容
head -2 1.txt | cut -d ':' -f 1,2
或者
head -2 1.txt | cut -d ':' -f 1-2
sort
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
[root@node01 tmp]# cat 01.txt
banana
apple
pear
orange
pear
[root@node01 tmp]# sort 01.txt
apple
banana
orange
pear
pear
sort的-u选项
它的作用很简单,就是在输出行中去除重复行。
[root@node01 tmp]# sort -u 01.txt
apple
banana
orange
pear
pear由于重复被-u选项无情的删除了。
sort的-r 和 -n选项
[root@node01 tmp]# cat 02.txt
1
3
5
7
11
2
4
6
10
8
9
sort默认的排序方式是升序
[root@node01 tmp]# sort 02.txt
1
10
11
2
3
4
5
6
7
8
9
排序程序将这些数字按字符来排序了,排序程序会先比较1和2,显然1小,所以就将10放在2前面
[root@node01 tmp]# sort -n 02.txt
1
2
3
4
5
6
7
8
9
10
11
-r表示降序,n表示按数字进行排序
[root@node01 tmp]# sort -n -r 02.txt
11
10
9
8
7
6
5
4
3
2
1
合并式
[root@node01 tmp]# sort -nr 02.txt
11
10
9
8
7
6
5
4
3
2
1
wc命令
wc命令用于计算字数。
利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
wc 文件名
参数:
- -c或--bytes或--chars 只显示Bytes数。
- -l或--lines 只显示行数。
- -w或--words 只显示字数。
- --help 在线帮助。
- --version 显示版本信息。
uniq
uniq 命令用于检查及删除文本文件中重复出现的行,一般与 sort 命令结合使用。
uniq 文件名
参数
-c 统计行数
练习1 去除5.txt中重复的行
cat 5.txt | sort | uniq
练习2 统计5.txt中每行内容出现的次
cat 5.txt | sort | uniq -c
tee
tee 和 >类似,重定向的同时还在屏幕输出
参数说明:
tee -a 内容追加 和 >> 类似
[root@hadoop01 tmp]# echo 'aaa' | tee 1.txt
aaa
[root@hadoop01 tmp]# cat 1.txt
aaa
[root@hadoop01 tmp]# echo 'bbb' | tee -a 1.txt
bbb
[root@hadoop01 tmp]# cat 1.txt
aaa
bbb
tr
Linux tr 命令用于转换或删除文件中的字符。
tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
-d, --delete:删除指令字符
练习1 把itheima的小写i换成大写I
echo "itheima" | tr 'i' 'I'
练习2 把itheima的小写i和a换成大写I和A
echo "itheima" | tr 'i' 'I' | tr 'a' 'A'
把itheima的转换为大写
echo "itheima" |tr '[a-z]' '[A-Z]'
练习5 单词计数
words.txt中的内容如下:
hello,world,hadoop
hive,sqoop,flume,hello
kitty,tom,jerry,world
hadoop
cat words.txt | tr -s ',' '\n' | sort | uniq -c | sort -r | awk '{print $2, $1}'
awk
awk是一种处理文本文件的命令,是一个强大的文本分析工具。但是比较复杂,不过功能比sed更加的强大,它支持分段。默认每行按空格或TAB分割。
-F 指定输入文件折分隔符
格式
awk '/查询内容/ 文件名称'
Xnip2020-05-31_17-41-45
高级用法:
查询姓张和姓李开头的成绩
awk '/^zhang|^li/' score.txt
打印前三段内容
awk -F ',' '{print $1, $2,$3,}' score.txt
打印所有
awk -F ',' '{print $0}' score.txt
打印带行号
awk -F ',' '{print NR, $0}' score.txt
获取最后一段内容
awk -F ',' '{print $NF}' score.txt
获取倒数第二段
awk -F ',' '{print $(NF - 1)}' score.txt
查询名字转成大写
awk -F ',' '{print toupper($1)}' score.txt
tolower // 转成小写
length // 返回字符长度
打印最后一行大于60分的人,并且标注及格
awk -F ',' '{if($NF > 60) print $1,$4,"及格"}' score.txt
网友评论