cut
cut
根据条件 从命令结果中 提取 对应内容
命令 | 含义 |
---|---|
cut 动作 文件 | 从指定文件 截取内容 |
参数 | 英文 | 含义 |
---|---|---|
-c | characters | 按字符选取内容 |
参数 | 英文 | 含义 |
---|---|---|
-d '分隔符' | delimiter | 指定分隔符 |
-f n1,n2 | fields | 分割以后显示第几段内容, 使用 , 分割 |
范围控制
范围 | 含义 |
---|---|
n | 只显示第n项 |
n- | 显示 从第n项 一直到行尾 |
n-m | 显示 从第n项 到 第m项(包括m) |
截取出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
通过 cut 动作 目标文件
可以根据条件 提取对应内容
sort
sort可针对文本文件的内容,以行为单位来排序。
对字符串排序
[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
ps : 去除重复必须先进行排序
对数值进行排序
参数 | 英文 | 含义 |
---|---|---|
-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 或者 sort -n -r 2.txt 11 10 9 8 7 6 5 4 3 2 1
对成绩排序
参数 | 英文 | 含义 |
---|---|---|
-t | field-separator | 指定字段分隔符 |
-k | key | 根据那一列排序 |
# 根据第二段成绩 进行倒序显示 所有内容
sort -t ',' -k2nr score.txt
wc命令
显示指定文件 字节数, 单词数, 行数 信息.
命令 | 含义 |
---|---|
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
统计多个文件的 行数 单词数 字节数a
[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
uniq
uniq 命令用于检查及删除文本文件中重复出现的行,一般与 sort 命令结合使用。
实现去重效果
命令 | 英文 | 含义 |
---|---|---|
uniq [参数] 文件 | unique 唯一 | 去除重复行 |
# 准备内容
[root@hadoop01 export]# cat 5.txt
张三 98
李四 100
王五 90
赵六 95
麻七 70
李四 100
王五 90
赵六 95
麻七 70
# 排序
[root@hadoop01 export]# cat 5.txt | sort
李四 100
李四 100
麻七 70
麻七 70
王五 90
王五 90
张三 98
赵六 95
赵六 95
# 去重
[root@hadoop01 export]# cat 5.txt | sort | uniq
李四 100
麻七 70
王五 90
张三 98
赵六 95
ps : 去除重复必须先进行排序
不但去重,还要 统计出现的次数
参数 | 英文 | 含义 |
---|---|---|
-c | count | 统计每行内容出现的次数 |
[root@hadoop01 export]# cat 5.txt | sort | uniq -c
2 李四 100
2 麻七 70
2 王五 90
1 张三 98
2 赵六 95
tee
通过 tee
可以将命令结果 通过管道 输出到 多个文件中
命令 | 含义 |
---|---|
命令结果 | tee 文件1 文件2 文件3 | 通过 tee 可以将命令结果 通过管道 输出到 多个文件中 |
将去重统计的结果 放到 a.txt、b.txt、c.txt 文件中
**cat 5.txt | sort | uniq -c | tee a.txt b.txt c.txt**
tr
通过 tr
命令用于 替换 或 删除 文件中的字符。
实现 替换效果
命令 | 英文 | 含义 |
---|---|---|
命令结果 | tr 被替换的字符 新字符 | translate | 实现 替换效果 |
将 小写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 | 删除指定的字符 |
- 需求: 删除abc1d4e5f中的数字
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
命令将大文件 切分成 若干小文件
按 字节 将 大文件 切分成 若干小文件
命令 | 英文 | 含义 |
---|---|---|
split -b 10k 文件 | byte | 将大文件切分成若干10KB的小文件 |
按 行数 将 大文件 切分成 若干小文件
命令 | 英文 | 含义 |
---|---|---|
split -l 1000 文件 | lines | 将大文件切分成若干1000行 的小文件 |
awk
通过 awk
实现 模糊查询, 按需提取字段, 还可以进行 判断 和 简单的运算等.
搜索 zhangsan 和 lisi 的成绩
命令 | 含义 |
---|---|
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 提供的函数
命令 | 含义 |
---|---|
awk -F ‘,’ ‘{print toupper($2)}’ 1.txt | 操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容 |
常用函数如下:
函数名 | 含义 | 作用 |
---|---|---|
toupper() | upper | 字符 转成 大写 |
tolower() | lower | 字符 转成小写 |
length() | length | 返回 字符长度 |
if语句 查询及格的学生信息
命令 | 含义 |
---|---|
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
通过 sed 可以实现 过滤 和 替换 的功能.
实现 查询 功能
命令 | 含义 |
---|---|
sed 可选项 目标文件 | 对目标文件 进行 过滤查询 或 替换 |
可选参数
可选项 | 英文 | 含义 |
---|---|---|
p | 打印 | |
$ | 代表 最后一行 | |
-n | 仅显示处理后的结果 | |
-e | expression | 根据表达式 进行处理 |
列出 1.txt的 1~5行 的数据
sed -n -e ‘1,5p’ 1.txt
列出01.txt的所有数据
sed -n -e ‘1,$p’ 1.txt
列出01.txt的所有数据 且 显示行号
可选项 | 含义 |
---|---|
= | 打印当前行号 |
sed -n -e '1,$=' -e '1,$p' 1.txt
简化版
cat -n 1.txt
cat -b 1.txt
nl 1.txt
查找01.txt中包含root行
sed -n -e ‘/root/p’ 1.txt
列出01.txt中包含root的内容,root不区分大小写,并显示行号
可选项 | 英文 | 含义 |
---|---|---|
I | ignore | 忽略大小写 |
答案:
nl 1.txt | sed -n -e '/root/Ip'
nl 01.txt | grep -i root
cat -n 01.txt | grep -i root
查找出1.txt中 字母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
实现 删除 功能
删除01.txt中前3行数据,并显示行号
可选项 | 英文 | 含义 |
---|---|---|
d | delete | 删除指定内容 |
答案:
nl 01.txt | sed -e '1,3d'
保留1.txt中前4行数据,并显示行号
答案:
nl 01.txt | sed -e '5,$d'
nl 1.txt | sed -n -e '1,4p'
实现 修改 功能
在01.txt的第二行后添加aaaaa,并显示行号
参数 | 英文 | 含义 |
---|---|---|
i | insert | 目标前面 插入内容 |
a | append | 目标后面 追加内容 |
nl 01.txt | sed -e '2a aaaaa'
在1.txt的第1行前添加bbb
nl 01.txt | sed -e '1i bbbbb'
实现 替换 功能
把1.txt中的nologin替换成为huawei,并显示行号
英文 | 含义 | |
---|---|---|
s/oldString/newString/ | replace | 替换 |
nl 1.txt | sed -e 's/nologin/huawei/'
把01.txt中的1,2行替换为aaa,并显示行号
选项 | 英文 | |
---|---|---|
2c 新字符串 | replace | 使用新字符串 替换 选中的行 |
nl passwd | sed -e '1,2c aaa'
对 原文件 进行操作
在01.txt中把nologin替换为 huawei
参数 | 英文 | 含义 |
---|---|---|
-i | in-place | 替换原有文件内容 |
sed -i -e 's/nologin/huawei/' 01.txt
在01.txt文件中第2、3行替换为aaaaaa
sed -i -e '2,3c aaa' 01.txt
注意:在进行操作之前,最好是对数据进行备份,放置操作失误,数据无法恢复!
删除01.txt中前2行数据,并且删除原文件中的数据
sed -i -e '1,2d' 01.txt
nl passwd 查看数据
获取ip地址
ifconfig eth0 | grep "inet addr" | sed -e 's/^.*inet addr://' | sed -e 's/Bcast:.*$//'
从1.txt中提出数据,匹配出包含root的内容,再把nologin替换为itheima
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}' #只显示替换内容的行
从1.txt中提出数据,删除前2行,并把nologin替换为itheima,并显示行号
nl 01.txt | sed -e '1,2d' | sed -e 's/nologin/itheima/'