截取前两行的第五个字符
head -2 1.txt | cut -c 5
截取前两行的1,2段落内容
head -2 1.txt | cut -d ':' -f 1,2
head -2 1.txt | cut -d ':' -f 1-2
排序
sort 2.txt
去重排序
sort -u 2.txt
正序排序
sort -n 3.txt
倒叙排序
sort -n -r 3.txt
指定分隔符排序(对内容的第二个字段进行排序)
sort -t ' ' -k2nr score.txt
-t 指定分隔符
-k 对哪一列排序
原文件内容如下:
zhangsan 68 99 26
lisi 98 66 96
wangwu 38 33 86
zhaoliu 78 44 36
maqi 88 22 66
zhouba 98 44 46
统计: -w 单词数 -l 行数 -c 字节数
wc 4.txt
wc -l 4.txt 多少行数
wc -l 4.txt
uniq 去重命令、统计次数[去重的前提是排序,去重的是相邻的]
cat 5.txt | sort 5.txt | uniq
替换
# 将 小写i 替换成 大写 I
echo "itheima" | tr 'i' 'I'
# 把itheima的转换为大写
echo "itheima" | tr '[a-z]' '[A-Z]'
# 把 HELLO 转成 小写
echo "HELLO" | tr '[A-Z]' '[a-z]'
删除所有数字
echo 'abc1d4e5f' | tr -d '[0-9]'
单词计数综合案例
原文件内容:
hello,world,hadoop
hive,sqoop,flume,hello
kitty,tom,jerry,world
hadoop
1. 将逗号换成换行符
2. 排序
3. 去重
4. 计数
cat words.txt | tr ',' '\n' | sort | uniq -c
1 flume
2 hadoop
2 hello
1 hive
1 jerry
1 kitty
1 sqoop
1 tom
2 world
split 切割
split -b 10k 文件 按照字符切割
split -l 1000 文件 按照行切割
awk
模糊搜索、按需提取字段、判断、运算
awk '/zh|li/' score.txt 搜索 zh 或者 li 的字段
awk -F ',' '{print 1, 2, $3}' 1.txt 操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容
awk -F ':' '{OFS="==="}{print 1, 2, $3}' 1.txt 操作1.txt文件, 根据逗号分割, 打印第一段 第二段 第三段内容
OFS="字符" 向外输出时的段分割字符串
awk -F ':' '{print toupper($2)}' 1.txt 操作1.txt文件, 根据逗号分割, 打印第一段 第二段 第三段内容,成大写的!
awk -F ' ' '{if(4>60) print 1, 4, "及格"; else print 1, $4, "不及格"}' score.txt 判断是否及格
awk -F ' ' 'BEGIN{total=0}{total=total+$4}END{print total, NR, (total/NR)}' score.txt 求平均分
sed
显式行号
#简化版
cat -n 1.txt
cat -b 1.txt
nl 1.txt
包含root的,忽略大小写。
nl 1.txt | sed -n -e '/root/Ip'
nl 1.txt | grep -i root
cat -n 1.txt | grep -i root
r后面多个t
sed -nr -e '/r+t/p' -e '/r+t/=' 1.txt
要显示前四个
nl 1.txt | sed -e '5,$d'
nl 1.txt | sed -n -e '1,4p'
append 添加
nl 1.txt | sed -e '2a aaaaa'
insert插入
nl 1.txt | sed -e '1i bbbbb'