常用的linux命令-- 文本搜索、编辑(grep、sed、awd)

    • grep
    • sed
      • sed使用参数
      • 其他使用
    • awk
      • 一般使用
      • 添加列名称
      • sub函数
      • awk内置的一些变量
    • cut命令

grep

global search regular expression(RE) and print out the line全面搜索正则表达式并把行打印出来 ,搜索内容是文本。

参数 说明 举例
-a 不忽略二进制数据
-A<显示列数i> 显示查到数据之后的行数i数据 grep -A2 “;$”
-b 显示符合范本样式的一行外,显示改行之前的内容
-c 计算符合范本样式的列数
-C<显示列数> 除了显示内容之外,显示该列前后的内容
-d<进行动作> 当查找的内容为目录而非文件时 必须使用该参数
-e<范本样式> 指定字符串为查找文件内容的范本样式
-E 使用扩展正则表达式
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式
-F 将范本样式视为固定字符串的列表
-G 将范本样式视为普通的表示法来使用
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称
-H 在显示符合范本样式的那一列之前,标示该列的文件名称
-i 忽略字符大小写的差别
-l 列出文件内容符合指定的范本样式的文件名称
-L 列出文件内容不符合指定的范本样式的文件名称
-n 显示符合范本样式的那一列之前,表示出该列的编号
-q 不显示任何信息
-r/R 此参数的效果和指定“-d recurse”参数相同
-s 不显示错误信息
-v 翻转查找
-w 只显示全字符符合的列
-x 只显示全列符合的列
-y 参数效果与-i相同
-o 只输出文件中匹配到的部分

sed

stream editor文本流编辑,sed是一个非交互式的面向字符流的编辑器。

sed使用参数:

参数 说明
-n 一般所有数据会输出到终端,现在只有经过一行会出现
-e 直接在命令列模式上进行sed的动作编辑
-f 直接将sed的动作写入一个文件内
-r sed动作支持的是延伸性正规表示法的语法
-i 直接修改该读取的文件内容,而不是输出到终端

动作:

参数 说明 使用
a 新增 sed ‘2a Drink tea’
c 取代 sed ‘2,5c No 2-5 number’
d 删除 sed ‘2,5d’
i 插入 sed ‘2i Drink tea’
p 列印 sed ‘2,5p’
s 取代 sed ‘s/old/new/p’

其他使用

  • 数据的搜索和显示
    nl testFile | sed ‘/searchStr/p’
  • 数据的搜索并删除
    nl testFile | sed ‘/searchStr/d’
  • 数据搜索并执行命令
    nl testFile | sed ‘/searchStr/{ s/searchStr/replaceStr/;p}’
  • 数据搜索并执行命令并退出
    nl testFile | sed ‘/searchStr/{ s/searchStr/replaceStr/;p;q}’
  • 数据的搜索并替换
    sed ‘s/searchStr/replaceStr/g’
  • 多点编辑
    删除并查找 ,中间命令使用”-e”连接
    nl testFile | sed -e ‘3.5d’ -e ‘s/searchStr/replaceStr/’

awk

与sed相同都是对文件进行逐行处理。
强大的文本分析工具 ,相对于grep的查找 ,sed的编辑 ,awk在堆数据分析并生成报告是,显的尤为强大 ,awk就是把文件逐行读入 ,以空格为默认分隔符,之后将切开的部分在进行各种分析处理。

一般使用

awk -F: ‘{print “hello”}’

添加列名称

last -5 | awk -F: ‘BEGIN {print “name \t,shell”} {print $1} END {print “blue\t,/bin/nosh”}’

sub函数

awk下gsub函数
sub、gsub函数返回的是执行替换或其他匹配操作的次数而不是改行执行结果。这里的sub/gsub函数中传入参数相当于sed命令的字符串端的内容以及写法。

awk内置的一些变量

变量名称 说明
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FRN 浏览文件的记录数
FS 设置输入域分隔符 ,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符

0 1。。。。
也可使用printf()进行打印输出,

awk编程:
可以将awk作为可执行文件来编辑 ,执行。
awk文件中的语法:

  • 变量和赋值 :不需要声明 ,有初始值,但仍需初始化
  • 条件语句:与c格式相似 。如:
if (expression) {
    statement;
    statement;
    ... ...
}

if (expression) {
    statement;
} else {
    statement2;
}

if (expression) {
    statement1;
} else if (expression1) {
    statement2;
} else {
    statement3;
}
  • 循环语句
    同样与c语言一致
  • 数组
    下标可以为数字和字符串,同样不需要声明,不需要初始化 ,会存储在hash表中 ,并不会顺序存储。相当于oc字典
    The GNU Awk User’s Guide

cut命令

文件内容查看
:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指 明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如cut fl f2 > f3将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。

-b:仅显示行中指定直接范围的内容; 
-c:仅显示行中指定范围的字符; 
-d:指定字段的分隔符,默认的字段分隔符为“TAB”; 
-f:显示指定字段的内容; 
-n:与“-b”选项连用,不分割多字节字符; 
--complement:补足被选择的字节、字符或字段; 
--out-delimiter=<字段分隔符>:指定输出内容是的字段分割符; 
--help:显示指令的帮助信息; 
--version:显示指令的版本信息。

你可能感兴趣的:(shell脚本)