Linux —— 查找与替换

文本查找:

grep, egrep, fgrep
   
    grep:根据基本正则表达式定义的模式搜索文档,并将符合模式的文本行显示出来
        注意:搜索时属于部分搜索,只要某一行有某一部分符合模式,就会被显示出来
        模式:pattern,文本字符和正则表达式的元字符组合而成的匹配条件
    grep 选项 模式 文件

    选项:
    -i:忽略大小写

    linlin@ubuntu:~/linlin/test$ cat exp.txt
I have a pen
I like to eat apple
The HHHHH
the Hhhhh
linlin@ubuntu:~/linlin/test$ grep -i hhh exp.txt
The HHHHH
the Hhhhh

--color:高亮显示
  -v:显示没有被模式匹配的行

  linlin@ubuntu:~/linlin/test$ grep -v hhh exp.txt
I have a pen
I like to eat apple
The HHHHH

-o:只显示被模式匹配到的字符串

  linlin@ubuntu:~/linlin/test$ grep -o hhh exp.txt
hhh

-E:扩展正则表达式,等于 egrep
  -F:使用固定字符串进行匹配,等于 fgrep
  
  egrep:等于 grep -E
  
  fgrep:不支持正则表达式,但搜索速度更快

文本替换

sed:流编辑器(Stream Editor),以批处理的方式而不是交互的方式来编辑文件
       它是文本处理中非常中的工具,能够完美的配合正则表达式使用。处理时,把当前处理的行存储
       在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处
       理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内
       容并没有改变。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

  模式空间:在内存中
  
  语法格式:sed [选项] '地址(对哪些行进行处理)命令' FILE(s)

常用选项:

  -n:静默模式,不再默认显示模式空间内的内容
-i:直接修改原文件
-e 脚本 -e 脚本……:使用多个脚本
-f /文件/to/脚本/:指定一个文件,文件每一行都是脚本(地址,命令)
-r:使用扩展正则表达式

  表示:
  1.地址:起始行,结束行
  例如,1,100
  2.命令:使用正则表达式指定的模式
  3.模式1,模式2  表示第一次被模式1匹配到的行开始到第一次被模式2匹配到的行结束,这中间的所有行
  4.行数,处理指定的行
    $表示最后一行,$-n表示倒数第n+1行
  5.起始行,+n  
  表示从起始行与其开始向后的n行,共n+1行

  命令:

  a\ 在当前行下面插入文本。
i\ 在当前行上面插入文本。
c\ 把选定的行改为新的文本。
d 删除,删除选择的行。
D 删除模板块的第一行。
s 替换指定字符
h 拷贝模板块的内容到内存中的缓冲区。
H 追加模板块的内容到内存中的缓冲区。
g 获得内存缓冲区的内容,并替代当前模板块中的文本。
G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。
l 列表不能打印字符的清单。
n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
p 打印模板块的行。
P(大写) 打印模板块的第一行。
q 退出Sed。
b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
r file 从file中读行。
t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
w file 写并追加模板块到file末尾。
W file 写并追加模板块的第一行到file末尾。
! 表示后面的命令对所有没有被选定的行发生作用。
= 打印当前行号码。
# 把注释扩展到下一个换行符以前。

 s/模式/字符串/修饰符:查找并替换,将每一行中能被模式匹配到的字符串转换成指定字符串,默认只替换每一行中第一

次被模式匹配到的字符串

  修饰符

  g:全局替换
i:忽略字符大小写
s后面的分隔符不一定需要为\,也可以为其他内容,但每个分隔符需要一样,这样可以保证对文本内容中含有分隔符字符
s\\\,s###
\(\),\,\……后向引用
&:引用模式匹配到的整个串,即表示模式匹配到的内容
-n选项 与 p命令一起使用,表示只显示匹配到的行
  root@ubuntu:/home/linlin/linlin/shell# sed -n 's/root/ROOT/pg' /etc/passwd
ROOT:x:::ROOT:/ROOT:/bin/bash

Linux —— 查找与替换的更多相关文章

  1. Linux查找和替换目录下所有文件中字符串(转载)

    转自:http://rubyer.me/blog/1613/ 单个文件中查找替换很简单,就不说了.文件夹下所有文件中字符串的查找替换就要记忆了,最近部署几十台linux服务器,记录下总结. 查找文件夹 ...

  2. linux查找与替换练习

    查找和替换-举例 删除/tmp/abc文件中第 2 至 5 行的内容 在第 2 行后面添加 123456 这一行 在文件的最后一行前面添加 123456 将文件中的 cat全部替换成 dog 注以上操 ...

  3. linux查找并替换命令

     find ./ -maxdepth 3 -type f -name "*Makefile"  |xargs sed -i "s/CXX = g++/CXX = ccac ...

  4. linux查找和替换命令

    http://blog.csdn.net/imyang2007/article/details/8105499 命令的东西应该多练,熟能生巧.

  5. linux shell 字符串操作(长度,查找,替换)详解

    linux shell 字符串操作(长度,查找,替换)详解 在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系 ...

  6. Linux 查找文件内容、替换

    有的时候我们经常性的需要在 linux 某一个目录下查找那些文件里包含我们需要查找的字符,那么这个时候就可以使用一些命令来查找,比如说 grep 1.grep 查询 1.1. 主要参数 [option ...

  7. linux 批量文件查找并替换

    linux 批量文件查找并替换 sed -i "s/oldstring/newstring/g" `grep oldstring -rl path` 如: sed -i " ...

  8. Linux使用vim进行多文件查找和替换的方法

    vim是Linux系统下常用的文本编辑,通过使用多种shell命令能够实现多文件的查找和替换,那么具体会使用到那些命令呢?下面小编就给大家介绍下Linux系统vim多文件查找和替换的方法. 在linu ...

  9. linux几种常见的文件内容查找和替换命令

    作为一个以前没怎么接触过linux的小白,开始使用linux,各种不习惯,这周遇到一个文件内容测查找和替换的需求.学习了以下几种实现方式: 1.vi命令下的查找和替换 1.1 vi下的查找 /patt ...

随机推荐

  1. MariaDB数据库(一)

    1.数据库简介 1.1 什么是数据库? 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方 ...

  2. 聊聊svg

    来源:SVG的用法 补充 CANVAS产生的dom数量比SVG要少 SVG可以使用css设置动画样式 对于动画性能来说,不能说svg或canvas谁更优,而是要看情况: SVG 是一种使用 XML 描 ...

  3. 条款13:以对象管理资源(use objects to manage resources)

    NOTE: 1.为防止资源泄漏,请使用RAII对象,它们在构造函数中获得资源并在析构函数中释放资源. 2.两个常被使用的RAII classes 分别是 trl::shared_ptr 和 auto_ ...

  4. Tiny4412 U-BOOT移植(转)

    http://blog.csdn.net/eshing/article/details/37520291(转) 一.移植前说明: 1.  特别声明:此文档是我的学习文档,里面肯定有错误地方,仅供参考! ...

  5. go语言碎片整理之标准库log

    log Go语言内置的log包实现了简单的日志服务.本文介绍了标准库log的基本使用. 使用Logger log包定义了Logger类型,该类型提供了一些格式化输出的方法.本包也提供了一个预定义的“标 ...

  6. 5.12-leepcode 作业详解

    leepcode 作业详解 1.给定一个整数数组,判断是否存在重复元素.如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 正确解答 class So ...

  7. while循环处理列表和字典

    一.在列表之间移动元素 假设有一个列表,里面存放的是网站新注册但没有验证的用户,验证这些用户后,如何将它们移动到另一个已验证用户列表中呢? 其中一种方法是使用while循环,在验证用户的同时,将其从未 ...

  8. PS学习笔记(03)

    ui到底是什么? 很多同学不知道ui是什么,以为画个ICON图标就是做ui了,导致很多人都忙着画各种各样的图标.这样很容易让那些新人们走错路,最后我想说的是icon不是全部,不要沉迷其中,要学的还有很 ...

  9. LR百分比模式

    1  场景模式切换 Vuser Group Mode转换为Percentage Mode:如下 Scenario->Convert Scenairio to the VuserGroup Mod ...

  10. CentOS7 设置代理

    大多数公司的网络都使用局域网加代理上网,也就是说上外网必须使用公司指定的代理服务器,这有几个好处: 1. 首先代理可以一定程度提高浏览速度,因为可以将更多的网页缓存在代理服务器上,需要的时候直接拿就很 ...