常用管道相关命令
cut
释义:根据条件从命令结果中提取对应内容
参数:
-c : 按字符选取行中内容
-d ’ ‘:指定以’ '中内容为分割符
-f n1 ,n2 :分割后显示第几段的内容、
sort
释义:sort可针对文本文件的内容来排序
-u :去重
-n :按照数值大小排序
-r :使次序颠倒
例:[root@node01 tmp]# sort -nr 2.txt
-t :指定字段分隔符
-k :根据那一列排序
例:[root@node01 tmp]# sort -t ‘,’ -k2nr score.txt
wc
释义:显示指定文件的行数、单词数、字节数
-c :字节数
-w :单词数
-l :行数
统计多个文件 :
wc 1.txt 2.txt 3.txt … wc *.txt
查看目录下的子内容:
[root@hadoop01 export]# ls /etc | wc -w
uniq
释义:uniq 命令用于检查及删除文本文件中重复出现的行,一般与 sort 命令结合使用
例:cat 5.txt | sort | uniq
-c :count 统计每行内容出现的次数
tee
释义:通过tee将命令结果输出到多个文件
命令格式:
命令结果 | tee 文件1 文件2 文件3
例:cat 5.txt | sort | uniq -c | tee a.txt b.txt c.txt
tr
释义:用于替换或删除文件中的字符
命令格式:
命令结果 | tr ‘旧字符’ ‘新字符’
-c :反选设定
-d : delet 删除指令字符
-s :缩减连续重复的字符为单个
split
释义:通过 split
命令将大文件 切分成 若干小文件
-b :指定每多少字节分割为一个小文件
-l :指定每多少行分割为一个小文件
-d :添加数字后缀(因为默认添加的是字母后缀,所有要想加数字需要自己添加)
-a : 输出文件后缀长度,默认为:2
awk
释义:通过 awk
实现 模糊查询, 按需提取字段, 还可以进行 判断 和 简单的运算等.
第一步:模糊查询
命令:
awk ‘/要查询的内容/’ 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