正则表达式
--概念:一种用来描述文本模式的特殊语法
--由普通字符(例如:字符a到z),以及特殊字符(元字符,如/*?等)组成匹配的字符串
--文本过滤工具在某种模式之下,都支持正则表达式
--基本元字符集及其含义
^ 只匹配行首
$ 只匹配行尾
* 一个单字符后紧跟*,匹配0个或多个此单字符
[] 匹配[]内字符。可以使一个单字符,也可以是字符序列。可以使用"-"表示[]内字符序列范围,如用[1-5]代替[12345]
\ 用来屏蔽一个元字符的特殊含义。因为有时在shell中一些元字符有特殊含义。"\"可以使其失去应有意义
. 匹配任意单字符
pattern\{n\} 用来匹配pattern出现次数,n为次数,(这里的大括号需要转义,和javascript不同)
pattern\{n,\} 含义同上,但次数最少为n
pattern\{n,m\} 含义同上,但pattern出现次数在n与m之间
--特殊:"^$"匹配空行 "^.$"匹配包含一个字符的行
--shell中似乎没有javascript中的\S,\w等元字符
xargs
--对于find命令查找的文件列表,想使用grep命令查找指定文件,但是有时候文件太多了,超过了grep命令的上限,就有了可能报错
--xargs的作用是:find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,
这样他可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去
--常见用法: find . -name "*" | xargs grep "hostname"
--注意:在find和grep中,如果不使用xargs,可能无法查出正确结果
grep
--功能:按照行方式处理文本
--语法格式: grep [选项] 基本正则表达式 [文件](没有文件也可以来自管道)
--参数
-n 显示匹配行及行号
-v 显示不包含匹配文本的所有行
--grep中的正则表达式不需要使用//
--例如:grep "^2014&" 1.c  --在1.c文件中查找以2014开头并且以2014结尾的字符串
awk
--参数
-F 指定分隔符
--例子①:awk -F ":" '{print $1 "--" $3}' passwd.txt
详解:'{print $1 "--" $3}',print $1打印第一列的数据,"--"用"--"来分割第一列和第三列数据,这里必须加双引号
--②:awk -F ":" '$3>499 {print $1 "\t" $3}' passwd
详解:$>499指的是第三列的值大于499的列
--$0表示一行的所有数据
--awk获取倒数第一个域$(NF-0),倒数第二个域是$(NF-1)
awk多条件判断
.awk中的判断符号和条件测试中的判断符号是不同的,awk中只有"=","!=","<",">"
.awk中多条件的连接符是"&&"(与)和"||"(或)
例如:awk -F "\t" '$2>=2 && $2<=5 {printf $0}' 1.c
--表示筛选第二列中大于等于2并且小于等于5的数据
sort
sort -n -k7
--"-n"按行排序,"-k[n]"按第n列升序排序
sort -n -k7 -r
--降序排列
tail -[n]
--从底下往上取n行
head -[n]
--从上往下取n行
wc -c
--显示总共有多少字符
wc -l
--显示总共有多少行
sed
--语法结构 sed options ... [script] ... [inputfile]
--如果没有输入文件,则sed默认对标准输入进行处理(即键盘输入)。脚本命令是第一个不以"-"开始的参数
--常用选项
-n 静默输出
-e 允许多个脚本指令被执行
-i 直接修改源文件,经过脚本指令处理过的内容将被输出至源文件(源文件被修改,慎用)
--常用用法
--按照一个范围(第几行到第几行)。提取数据
--sed的主要用法是编辑功能...对提取的数据,进行修改,替换,编辑,删除,插入等操作
--sed通过读取读取文件内容,但一次仅读一行内容进行指令操作后输出,所以sed更适合处理大数据文件。
--sed -n 'p' 文件名
详解:打印文件中所有行,包括空行,"p"表示打印行数据
$p表示最后一行;sed -n '$=' 获取最后一行的行号
--sed -n '3,/ddd/p' 文件名
详解:从第三行开始匹配,打印含有ddd的行,、
--sed -n '/^$/=' 文件名
详解:打印空行的行号,"="表示打印行号,不打印行数据
--sed多条指令的执行方法1 sed -n -e '3p' -e '/^$/=' .c
详解:通过仔细观察发现,如果第二行是空行,会先打印第二行的行号,再打印第三行,
这是因为sed是一行行的读取数据的
--sed多条指令执行方法2 sed -n '3p;/^$/=' .c
注意用分隔符";"分开
--sed脚本操作选项
a(append) 追加
i(insert) 插入
d(delete) 删除
s(substitution) 替换
--例子:
--sed '2a 大较好' 文件名
详解:向文本第二行后面追加"大家好"字符串(有换行问题)
--sed '3i 大家好' 文件名
详解:向文本第三行前插入"大家好"字符串(有换行问题)
--sed 's/匹配原来的字符串正则表达式/向替换的字符/g' 文件名
详解"s"表示是替换的意思,"g"表示全文的意思
--sed '3,4d' 文件名
详解:删除第三行到第四行的数据
--sed 's/hello//g' 文件名
详解:把全文的hello替换成空字符串
--注意:sed语法中,如果需要使用shell变量,那么不能加"'"单引号,并且变量必须使用${}形式
例如:ipcs | sed -n ${变量1},${变量2}p

Linux shell文本过滤的更多相关文章

  1. Linux Shell编程学习笔记——目录(附笔记资源下载)

    LinuxShell编程学习笔记目录附笔记资源下载 目录(?)[-] 写在前面 第一部分 Shell基础编程 第二部分 Linux Shell高级编程技巧 资源下载 写在前面 最近花了些时间学习She ...

  2. linux shell编程总结

    linux shell编程总结 本周学习了unix/linux shell编程,参考的是<LINUX与UNIX Shell 编程指南>,David Tansley著:徐焱,张春萌等译,由机 ...

  3. linux shell 中的sleep命令

    开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...

  4. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  5. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  6. Linux shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

  7. Linux Shell 流程控制语句

    * 本文主要介绍一些Linux Shell 常用的流程控制语句* 1. if 条件语句:if-then/if-elif-fi/if- else-fi if [条件判断逻辑1];then command ...

  8. Linux Shell 截取字符串

    Linux Shell 截取字符串 shell中截取字符串的方法很多 ${var#*/} ${var##*/} ${var%/*} ${var%%/*} ${var:start:len} ${var: ...

  9. Linux Shell 重定向与管道【转帖】

    by 程默 在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以 ...

随机推荐

  1. sql 如果关联表 没有值 设置 默认值

     SELECT *FROM ( SELECT t.task_name, t.status AS task_status, coalesce( r.task_ref_id, 999 ) AS task_ ...

  2. Spark:一个高效的分布式计算系统

    概述 什么是Spark ◆ Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥 ...

  3. 1.9 基础知识——GP2.10 高级别的领导检查(Higher level management)

    GP2.10 Review the activities,status,and results of XXX process with highter level management and res ...

  4. android 进程/线程管理(一)----消息机制的框架

    一:android 进程和线程 进程是程序运行的一个实例.android通过4大主件,弱化了进程的概念,尤其是在app层面,基本不需要关系进程间的通信等问题. 但是程序的本质没有变,尤其是多任务系统, ...

  5. AngularJS 指令

    AngularJS 指令 AngularJS 指令是扩展的 HTML 属性,带有前缀 ng-. ng-app 指令 ng-app 指令定义了 AngularJS 应用程序的 根元素. ng-app 指 ...

  6. input的file 控件及美化

    在一些网站进行上传时,当单击了“浏览”按钮之后会弹出[选择文件]的对话框.想要实现这一功能,用input的file控件来实现就好啦~ <!doctype html> <html la ...

  7. MVC6的内置ActionResult类型

    BadRequestObjectResult,BadRequestResult http 400 bad request ChallengeResult   ContentResult   Creat ...

  8. su认证失败&文件夹里打开终端的方法&atom安装

    很久没用笔记本上的ubuntu,用不顺手,比在公司调教了半年多的电脑差远了.一步一步来.先解决最不顺手的三件事 1.su认证失败. 新安装的ubuntu系统是无法切换到root账户的,得做一番修改 s ...

  9. WIN 下的超动态菜单(二)用法

    WIN 下的超动态菜单(一)简介 WIN 下的超动态菜单(二)用法 WIN 下的超动态菜单(三)代码 作者:黄山松,发表于博客园:http://www.cnblogs.com/tomview/     ...

  10. 004.UDP--拼接UDP数据包,构造ip头和udp头通信(使用原始套接字)

    一.大致流程: 建立一个client端,一个server端,自己构建IP头和UDP头,写入数据(hello,world!)后通过原始套接字(SOCK_RAW)将包发出去. server端收到数据后,打 ...