####完成要点
cut
sort
wc
uniq
tee
tr
split
awk
sed
grep
示例数据 成绩表信息
zhangsan 68 99 26
lisi 98 66 96
wangwu 38 33 86
zhaoliu 78 44 36
maq 88 22 66
zhouba 98 44 46
使用 逗号 分割, 第一列 是 姓名, 第二列是 语文成绩, 第三列是 数学成绩, 第四列是 英语成绩
示例数据
vim 1.txt
111:aaa:bbb:ccc
222:ddd:eee:fff
333:ggg:hhh
444:iii
cut
根据条件 从命令结果中 提取 对应内容命令 | 含义 |
---|---|
cut 动作 文件 | 从指定文件 截取内容 |
参数 | 英文 | 含义 |
---|---|---|
-c | characters | 按字符选取内容 |
head -2 1.txt | cut -c 5
‘-c 5’ 选取内容 第5个字符
参数 | 英文 | 含义 |
---|---|---|
-d '分隔符' |
delimiter | 指定分隔符 |
-f n1,n2 |
fields | 分割以后显示第几段内容, 使用 , 分割 |
范围控制
范围 | 含义 |
---|---|
n |
只显示第n项 |
n- |
显示 从第n项 一直到行尾 |
n-m |
显示 从第n项 到 第m项(包括m) |
head -2 1.txt | cut -d ':' -f 1,2
‘-d ':'’以':'为分隔符进行读取
‘-f 1,2’读取出分隔符分割后的第一段和第二段内容
cut 动作 目标文件
可以根据条件 提取对应内容示例数据
vim score.txt
zhangsan 68 99 26
lisi 98 66 96
wangwu 38 33 86
zhaoliu 78 44 36
maq 88 22 66
zhouba 98 44 46
[root@node01 tmp]# cat 2.txt
banana
apple
pear
orange
pear
[root@node01 tmp]# sort 2.txt
apple
banana
orange
pear
pear
参数 | 英文 | 含义 |
---|---|---|
-u |
unique | 去掉重复的 |
它的作用很简单,就是在输出行中去除重复行。
[root@node01 tmp]# sort -u 2.txt
apple
banana
orange
pear
参数 | 英文 | 含义 |
---|---|---|
-n |
numeric-sort | 按照数值大小排序 |
-r |
reverse | 使次序颠倒 |
示例数据
[root@node01 tmp]# cat 3.txt
1
3
5
7
11
2
4
6
10
8
9
默认按照字符串
排序
[root@node01 tmp]# sort 2.txt
1
10
11
2
3
4
5
6
7
8
9
升序
[root@node01 tmp]# sort -n 2.txt
1
2
3
4
5
6
7
8
9
10
11
倒序
[root@node01 tmp]# sort -n -r 2.txt
11
10
9
8
7
6
5
4
3
2
1
合并式
[root@node01 tmp]# sort -nr 2.txt
11
10
9
8
7
6
5
4
3
2
1
参数 | 英文 | 含义 |
---|---|---|
-t |
field-separator | 指定字段分隔符 |
-k |
key | 根据那一列排序 |
# 根据第二段成绩 进行倒序显示 所有内容
sort -t ',' -k2nr score.txt
‘-k2’ 选中第二列
‘n’ 按数值大小排序
‘r’ 倒序显示
sort 动作 目标文件
可以根据条件 对文件进行排序/etc
目录下 有多少个 子内容命令 | 含义 |
---|---|
wc 文件名 | 显示指定文件 字节数, 单词数, 行数 信息 |
[root@hadoop01 export]# cat 4.txt
111
222 bbb
333 aaa bbb
444 aaa bbb ccc
555 aaa bbb ccc ddd
666 aaa bbb ccc ddd eee
[root@hadoop01 export]# wc 4.txt
6 21 85 4.txt
参数 | 英文 | 含义 |
---|---|---|
-c |
bytes | 字节数 |
-w |
words | 单词数 |
-l |
lines | 行数 |
[root@hadoop01 export]# wc 4.txt
6 21 85 3.txt
[root@hadoop01 export]# wc 1.txt 2.txt 3.txt
4 4 52 1.txt
11 11 24 2.txt
6 21 85 3.txt
21 36 161 总用量
[root@hadoop01 export]# wc *.txt
4 4 52 1.txt
11 11 24 2.txt
6 21 85 3.txt
6 6 95 score.txt
27 42 256 总用量
/etc
目录下 有多少个 子内容[root@hadoop01 export]# ls /etc | wc -w
240
wc 文件
就可以 统计 文件的 字节数、单词数、行数.uniq 命令用于检查及删除文本文件中重复出现的行,一般与 sort 命令结合使用。
命令 | 英文 | 含义 |
---|---|---|
uniq [参数] 文件 |
unique 唯一 | 去除重复行 |
[root@hadoop01 export]# cat 5.txt
张三 98
李四 100
王五 90
赵六 95
麻七 70
李四 100
王五 90
赵六 95
麻七 70
# 排序 sort
[root@hadoop01 export]# cat 5.txt | sort
李四 100
李四 100
麻七 70
麻七 70
王五 90
王五 90
张三 98
赵六 95
赵六 95
# 去重 uniq
[root@hadoop01 export]# cat 5.txt | sort | uniq
李四 100
麻七 70
王五 90
张三 98
赵六 95
参数 | 英文 | 含义 |
---|---|---|
-c |
count | 统计每行内容出现的次数 |
[root@hadoop01 export]# cat 5.txt | sort | uniq -c
2 李四 100
2 麻七 70
2 王五 90
1 张三 98
2 赵六 95
uniq [选项] 文件
就可以完成 去重行 和 统计次数tee
可以将命令结果 通过管道 输出到 多个文件中命令 | 含义 |
---|---|
命令结果 | tee 文件1 文件2 文件3 | 通过 tee 可以将命令结果 通过管道 输出到 多个文件中 |
cat 5.txt | sort | uniq -c | tee a.txt b.txt c.txt
tee
可以将命令结果 通过管道 输出到 多个文件中tr
命令用于 替换 或 删除 文件中的字符。命令 | 英文 | 含义 |
---|---|---|
命令结果 | tr 被替换的字符 新字符 | translate | 实现 替换效果 |
# 将 小写i 替换成 大写 I
# 把itheima的转换为大写
# 把 HELLO 转成 小写
# 将 小写i 替换成 大写 I
echo "itheima" | tr 'i' 'I'
# 把itheima的转换为大写
echo "itheima" |tr '[a-z]' '[A-Z]'
# 把 HELLO 转成 小写
echo "HELLO" |tr '[A-Z]' '[a-z]'
命令 | 英文 | 含义 |
---|---|---|
命令结果 | tr -d 被删除的字符 | delete | 删除指定的字符 |
echo 'abc1d4e5f' | tr -d '[0-9]'
-示例数据
[root@hadoop01 export]# cat words.txt
hello,world,hadoop
hive,sqoop,flume,hello
kitty,tom,jerry,world
hadoop
·分析
1 将, 换成 换行
2 排序
3 去重
4 计数
·操作
# 统计每个单词出现的次数
[root@hadoop01 export]# 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
# 查看 /etc目录下 以.conf以结尾的文件的内容
cat -n /etc/*.conf
# 将命令结果 追加到 /export/v.txt 文件中
cat -n /etc/*.conf >> /export/v.txt
split
命令将大文件 切分成 若干小文件命令 | 英文 | 含义 |
---|---|---|
split -b 10k 文件 | byte | 将大文件切分成若干10KB的小文件 |
命令 | 英文 | 含义 |
---|---|---|
split -l 1000 文件 | lines | 将大文件切分成若干1000行 的小文件 |
split 选项 文件名
命令可以将大文件 切分成 若干小文件awk
实现 模糊查询, 按需提取字段, 还可以进行 判断 和 简单的运算等.第一步: 模糊查询
第二步: 指定分割符, 根据下标显示内容
第三步: 指定输出字段的分割符
第四步: 调用 awk 提供的函数
第五步: 通过if语句判断$4是否及格
第六步: 段内容 求和
命令 | 含义 |
---|---|
awk ‘/zhangsan|lisi/’ score.txt | 模糊查询 |
命令 | 含义 |
---|---|
awk -F ‘,’ ‘{print $1, $2, $3}’ 1.txt | 操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容 |
·选项
选项 | 英文 | 含义 |
---|---|---|
-F ',' |
field-separator | 使用 指定字符 分割 |
$ + 数字 |
获取第几段内容 | |
$0 |
获取 当前行 内容 | |
NF |
field | 表示当前行共有多少个字段 |
$NF |
代表 最后一个字段 | |
$(NF-1) |
代表 倒数第二个字段 | |
NR |
代表 处理的是第几行 |
命令 | 含义 |
---|---|
awk -F ’ ’ ‘{OFS="==="}{print $1, $2, $3}’ 1.txt | 操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容 |
·选项
选项 | 英文 | 含义 |
---|---|---|
OFS="字符" |
output field separator | 向外输出时的段分割字符串 |
命令 | 含义 |
---|---|
awk -F ‘,’ ‘{print toupper($2)}’ 1.txt | 操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容 |
·常用函数如下:
函数名 | 含义 | 作用 |
---|---|---|
toupper() | upper | 字符 转成 大写 |
tolower() | lower | 字符 转成小写 |
length() | length | 返回 字符长度 |
命令 | 含义 |
---|---|
awk -F ‘,’ ‘{if($4>60) print $1, $4 }’ score.txt | 如果及格,就显示 $1, $4 |
awk -F ‘,’ ‘{if($4>60) print $1, $4, “及格”; else print $1, $4, “不及格”}’ score.txt | 显示 姓名, $4, 是否及格 |
·选项
参数 | 含义 |
---|---|
if($0 ~ “aa”) print $0 | 如果这一行包含 “aa”, 就打印这一行内容 |
if($1 ~ “aa”) print $0 | 如果**第一段 **包含 “aa”, 就打印这一行内容 |
if($1 == “lisi”) print $0 | 如果第一段 等于 “lisi”, 就打印这一行内容 |
命令 | 含义 |
---|---|
awk ‘BEGIN{初始化操作}{每行都执行} END{结束时操作}’ 文件名 | BEGIN{ 这里面放的是执行前的语句 } {这里面放的是处理每一行时要执行的语句} END {这里面放的是处理完所有的行后要执行的语句 } |
awk -F ',' 'BEGIN{}{total=total+$4}END{print total, NR, (total/NR)}' score.txt
命令 | 含义 |
---|---|
sed 可选项 目标文件 | 对目标文件 进行 过滤查询 或 替换 |
·可选参数
可选项 | 英文 | 含义 |
---|---|---|
p | 打印 | |
$ | 代表 最后一行 | |
-n |
仅显示处理后的结果 | |
-e |
expression | 根据表达式 进行处理 |
sed -n -e '1,5p' 1.txt
sed -n -e '1,$p' 1.txt
可选项 | 含义 |
---|---|
= | 打印当前行号 |
sed -n -e '1,$=' -e '1,$p' 1.txt
简化版
cat -n 1.txt
cat -b 1.txt
nl 1.txt
sed -n -e '/root/p' 1.txt
可选项 | 英文 | 含义 |
---|---|---|
I | ignore | 忽略大小写 |
nl 1.txt | sed -n -e '/root/Ip'
nl 01.txt | grep -i root
cat -n 01.txt | grep -i root
r
后面是多个t的行,并显示行号可选项 | 英文 | 含义 |
---|---|---|
-r |
regexp-extended | 识别正则 |
nl 01.txt | sed -nr -e '/r+t/p'
或者
sed -nr -e '/r+t/p' -e '/r+t/=' 01.txt
可选项 | 英文 | 含义 |
---|---|---|
d |
delete | 删除指定内容 |
nl 01.txt | sed -e '1,3d'
nl 01.txt | sed -e '5,$d'
nl 1.txt | sed -n -e '1,4p'
参数 | 英文 | 含义 |
---|---|---|
i | insert | 目标前面 插入内容 |
a | append | 目标后面 追加内容 |
nl 01.txt | sed -e '2a aaaaa'
nl 01.txt | sed -e '1i bbbbb'
英文 | 含义 | |
---|---|---|
s/oldString/newString/ | replace | 替换 |
nl 1.txt | sed -e 's/nologin/huawei/'
选项 | 英文 | |
---|---|---|
2c 新字符串 |
replace | 使用新字符串 替换 选中的行 |
答案:
nl passwd | sed -e '1,2c aaa'
参数 | 英文 | 含义 |
---|---|---|
-i | in-place | 替换原有文件内容 |
sed -i -e 's/nologin/huawei/' 01.txt
sed -i -e '2,3c aaa' 01.txt
答案:
sed -i -e '1,2d' 01.txt
nl passwd 查看数据
ifconfig eth0 | grep "inet addr" | sed -e 's/^.*inet addr://' | sed -e 's/Bcast:.*$//'
nl 01.txt | grep 'root' | sed -e 's/nologin/itheima/'
或者
nl 01.txt | sed -n -e '/root/p' | sed -e 's/nologin/itheima/'
或者
nl 01.txt | sed -n -e '/root/{s/nologin/itheima/p}' #只显示替换内容的行
nl 01.txt | sed -e '1,2d' | sed -e 's/nologin/itheima/'