shell 工具
cut
cut,在文件中负责剪切数据,从文件的每一行剪切字节、字符、字段 并将这些字节、字符、字段 输出,不会改变原文件
基本用法
cut [选项参数] filename
选项参数有以下:
-
-f :列号,提取第几列,提取多列用 逗号 隔开,如 2,3;取第几列后所有的用 列号-,如 3-
-
-d :分隔符,不写默认指定分隔符tab切割,类似于Java的split
sed
sed 是一种 流编辑器,一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为 "模式空间",接着用 sed 命令处理缓冲区中的内容,处理完后,把缓冲区的内容送往屏幕,接着处理下一行,这样不断重复,直接文件末尾。文件的内容没有改变,除非使用重定向存储输出
基本用法
sed [选项参数] 'command' filename
选项参数有如下:
-
-e :直接在指令列模式上进行sed的动作编辑,需要执行多个命令功能时使用
sed -e "2d" -e "s/wo/ni/g" sed.txt
命令功能:
-
a :新增,a 的后面可以接字符串,在下一行出现,na 即第几行后面增加
sed "2a mei nv" sed.txt
-
d :删除
sed "/wo/d" sed.txt
-
s :查找并替换
sed "s/wo/ni/g" sed.txt
,g 表示全局替换
awk
文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理
基本用法
awk [选项参数] 'pattern1{action1}' 'pattern2{action2}' ... filename
-
pattern :匹配模式,表示awk 在数据中查找的内容
-
空行的正则: "^$"
-
-
action :在找到匹配内容时所执行的一系列命令,$ i 为第 i 列,BEGIN 为首行,END为尾行
-
选项参数
-
-F :指定分隔符,类似Java的split
-
-v :定义一个变量,可同时赋值
-
-
内置贝纳利
-
FILENAME :文件名
-
NR :已读的记录数,读取的行的数量
-
NF :切割后,列的个数
-
##以root开头的行,第7列
awk -F ':' '/^root/{print $7}' passwd
##以root开头的行,第1列和第7列,中间逗号分开
awk -F ':' '/^root/{print $1","$7}' passwd
##打印第1行和第7行,第一行加上user,shell, 最后一行加上ending,all
awk -F ':' 'BEGIN{print "user,shell"} {print $1","$7} END{print "ending,all"}' passwd
##第3列都 +1
awk -F ':' -v i=1 '{print $3+i}' passwd
##打印文件名,行数,列数
awk -F : '{print FILENAME","NR","NF}' passwd
sort
基本语法
sort (排序参数)(文件列表) , 将文件进行排序,并将排序结果标准输出
排序参数如下:
-
-n :依照数值的大小排序
-
-r :以相反的顺序排序
-
-t :设置排序时所用的分隔字符,进行切割
-
-k :指定切割后用来排序的列
文件列表: 指定待排序的文件列表
## 以 : 切割后,按第二列的数值倒序
sort -t : -nrk 2 sort.sh