shell(三)

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


原文地址:https://www.cnblogs.com/yjh1995/p/13160563.html