cut
- cut 用来提取文本中的某一部分文本
- 语法:cut [选项] 文件名
- -f 列号,用来指定要提取的列
- -d 分隔符,按照指定分隔符分割列,默认分隔符是TAB制表符
- 示例代码:
# 提取用户名和它使用的 shell # 分隔符是 : # 提取第 1 列、第 7 列 cat /etc/passwd | cut -f 1,7 -d :
printf
-
按规定格式输出
-
语法:printf 输出类型 输出内容
参数 含义 %ns 输出字符串,n是数字指代输出几个字符 %ni 输出整数,n是指输出几个数字 %m.nf 输出浮点数,m和n是数字,指代输出的整数位数和小数位数,如%6.2f代表输出6位位,2位小数,4位整数 -
示例代码:
df -h # 输出以下信息,字段之间间隔大小不一 # Filesystem Size Used Avail Capacity iused ifree %iused Mounted on # /dev/disk3s1s1 228Gi 8.9Gi 15Gi 37% 355384 161486880 0% / # devfs 209Ki 209Ki 0Bi 100% 724 0 100% /dev # ... printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t \n" $(df -h | grep /System) | cut -f 1,5 # Filesystem Capacity # /dev/disk3s1s1 37% # devfs 100% # ...
awk
语法:
awk '条件1{动作1} 条件2{动作2}...' 文件名
条件(Pattern)
- 一般使用关系表达式作为条件
- x > 10 判断变量 x 是否大于 10
- x >=10 大于等于
- x <=10 小于等于
动作(Action):格式化输出
$0 整行,$1 第一列…
-
begin end
- awk 可以正确截取制表符和空格
- begin 在所有的输出之前打印
- end 在所有的输出之后打印
txtSHELL1 2
awk 'BEGIN{print "开始"} {print $1} END{print "结束"}' number.txt # 开始 # 1 # 2 # 结束
-
FS
- Field Separator,字段分隔符
awk 'BEGIN{FS=":"}{print $1"\t"$2}' /etc/passwd
-
声明变量
TXTSHELL1 2 3
awk 'BEGIN{sum=0}{sum=sum+$1}END{print sum}' numbers.txt # 6
-
多条件
TXTSHELLzhangsan 91 li 81 wangwu 71
awk '$2>90{print $1"\t优秀"}$2<80{print $1"\t良好"}' score.txt # zhangsan 优秀 # wangwu 良好
-
NR
- NR,表示 awk 开始执行程序后所读取的数据行数
awk '{print NR,$0}' score.txt # 1 zhangsan 91 # 2 li 81 # 3 wangwu 71
- NR,表示 awk 开始执行程序后所读取的数据行数
-
OFS
- OFS Out of Field Separator,输出字段分隔符
echo "i love you" | awk 'BEGIN{ FS=" ";OFS="-" }{print $1,$2,$3}' # i-love-you
- OFS Out of Field Separator,输出字段分隔符
sed
sed 是一个轻量级编辑器,主要用来对数据进行选取、替换、替换和新增操作
语法:sed [选项] ‘[动作]’ 文件名
所有的动作都必须用单号号括起来
类型类似于批量 vi 操作
-
动作
参数 含义 示例 a 追加,在每一行或者指定行下面添加一行或多行 sed ‘1a newline’ score.txt c 行替换,用c后面的字符串替换掉原始整个数据行 sed ‘c newline’ score.txt s 字符串替换,用一个字符串替换另外一个字符串,格式为 “行范围s/旧字符串/新字符串/g” sed ‘3s/lisi/lisisi/g’ score.txt i 插入,在当前行插入一行或多行 sed ‘1i newline’ score.txt d 删除指定的行 sed ‘1,2d’ score.txt p 打印,输出指定的行 sed -n ‘2p’ score.txt -
选项
参数 含义 示例 -n 一般sed命令会把所有的数据都输出到屏幕上,如果加入此选项则只会把处理过的行输出到屏幕上 sed -n ‘2p’ score.txt -e 允许对输入数据应用多条sed编辑命令 sed -e ‘s/91/92/g;s/81/82/g’ score.txt -i 用sed的修改直接修改编辑的文件,而不是在屏幕上输出 sed -i ‘1i newline’ score.txt
sort
-
语法:sort [选项] 文件名
-
选项
参数 含义 示例 -f 忽略大小写 sort -f -t “:” -n -k 5,5 /etc/passwd -n 以数值型进行排序,默认使用字符串顺序 sort -t “:” -n -k 3,3 /etc/passwd -r 反向排序,默认从小到大 sort -r /etc/passwd -t 指定分割符,默认分割符是制表符 sort -t “:” -k 3,3 /etc/passwd -k n[,m] 按照指定的字段范围排序。从第n个字段开始,到第m个字段结束,默认是到行尾 sort -t “:” -k 3,3 /etc/passwd
环境变量配置文件
上一篇