linux 文本处理

grep

过滤

格式: grep [选项]... 查找条件 目标文件

选项 

-m 匹配m次后停止        grep -m 1 root /etc/passwd   #多个匹配只取第一个

-v  取反

-i   忽略大小写

-n  显示匹配的行号

-c  统计匹配的行数

-o  仅显示匹配到的字符串

-q 静默模式 不输出任何信息  一般用于脚本

-A  打印后指定行

-B  打印前指定行

-C 前后各指定行

-e 实现多个选项间逻辑or关系  grep -e root -e bash /etc/passwd #包含root或者包含bash 的行

-w 匹配整个单词

-E 使用ERE 使用扩展正则 

-F 不支持正则表达式 相当于 fgrep

-f  file根据模式文件,处理两个文件相同内容 把第一个文件作为匹配条件

-r  递归目录,但不处理逻辑

-R 递归目录,但处理软连接

sed

基本语法

sed [option] ...  'script;script;...'          [input file...]

        选项          自身脚本语法       支持标准输入管道

选项

-n  不输出模式空间内容到屏幕,即不自动打印

-e   多点编辑[root@www. data] #sed -n  -e  '/^r/p'   -e  '/^b/p'    /etc/passwd

-f     FILE 从指定文件中读取编辑脚本

-r,  -E  使用扩展正则表达式

-i.bak     备份文件并原处备份     (-i.后面跟什么都行,.123  .xhz   ... 都可以)

#说明: 
-ir 不支持
-i -r 支持
-ri   支持
-ni   会清空文件

sed脚本格式    '地址+命令'组成

1.不给地址,对全文进行处理(比如行号)

2.单地址

    #:指定的行  $:最后一行

3.地址范围

  #,#    从#行到第#行   3,6 从第3行到6行

 #,+#   从#行到  +#行   3,+4 从第3行到第7行

/pat1/ ,/pat2/ 第一个正则表达式到第二个正则表达式之间的行

#, /pat/  从#号行为开始找到pat为止

/pat/,#  找到#号个part为止

4. 步进:  ~

   1~2  奇数行    从1开始每次跳2位

   2~2  偶数行    从2开始每次跳2位

命令

 p  打印当前模式空间的内容,追加到默认输出之后

Ip  忽略大小写输出

d  删除模式空间

a  [\]text  在指定行后面追加文本,支持使用\n实现多行追加

i   [\text]  在行前面插入文本

c  [\text]  替换行为单行或多行文本

w  file  保存模式匹配的行至指定文件 

r   file   读取指定文件的文本至模式空间中匹配的行后

=  为模式空间中的行打印行号

!    模式空间中匹配行取反处理

q   结束或退出sed

搜索替代

s/旧内容/新内容/修饰符  

查找替换,支持使用其他分隔符,如 s@@@ ,s###

替换修饰符:

  g  行内全局替换

  p  显示替换成功的行

  w  /PATH/FILE 将替换成功的行保存至文件中

  I,i  忽略大小写

[root@localhost ~]#echo 123abcxyz |sed -r 's/(123)(abc)(xyz)/\1/'
##分组 s//代表查找替换  ()代表分组    \1 代表留下的组
123

awk

格式

awk [options]  'program' var=value file...

program 通常放在单引号中,并可以由三种部分组成

  BEGIN语句块    模式匹配的通用语句块   END语句块

awk 选项  '模式{print  }'

选项 

-F 指定分隔符 ,不写默认指定空格为分隔符,并压缩成一个空格

-v var=value 变量赋值

FS  指定每行文本的字段分隔符,缺省默认为空格或制表符(tab) 。与 ' -F' 作用相同  -v "FS=:"

OFS  输出时的分隔符

NF  当前处理的行的字段个数

NR  当前处理的行的行号(序号)

$0   当前处理的行的整行内容

$n   当前处理行的第n个字段(第n列)

FILENAME:被处理的的文件名

RS  行分隔符。

printf

%s:显示字符串

%d,%i:显示十进制数

%f:显示为浮点数

%e,%E:显示科学计数法数值

%c:显示字符的ASCLL码

%g,%G:以科学计数法或浮点形式显示数值

%u:无符号整数

%%:显示%自身

例  awk -F:  '{printf "%s",$1}' /etc/passwd

  

你可能感兴趣的:(linux,运维,服务器)