Linux —— 查找与替换

文本查找:
    grep, egrep, fgrep
   
    grep:根据基本正则表达式定义的模式搜索文档,并将符合模式的文本行显示出来
        注意:搜索时属于部分搜索,只要某一行有某一部分符合模式,就会被显示出来
        模式:pattern,文本字符和正则表达式的元字符组合而成的匹配条件
    grep 选项 模式 文件
    -i:忽略大小写
    [email protected]:~/linlin/test$ cat exp.txt
  I have a pen
  I like to eat apple
  The HHHHH
  the Hhhhh
    [email protected]:~/linlin/test$ grep -i hhh exp.txt
  The HHHHH
  the Hhhhh
  --color:高亮显示
  -v:显示没有被模式匹配的行
    [email protected]:~/linlin/test$ grep -v hhh exp.txt
  I have a pen
  I like to eat apple
  The HHHHH
  -o:只显示被模式匹配到的字符串
  [email protected]:~/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###
  \(\),\1,\2……后向引用
  &:引用模式匹配到的整个串,即表示模式匹配到的内容
  -n选项 与 p命令一起使用,表示只显示匹配到的行
  [email protected]ntu:/home/linlin/linlin/shell# sed -n ‘s/root/ROOT/pg‘ /etc/passwd
  ROOT:x:0:0:ROOT:/ROOT:/bin/bash

时间: 2024-12-05 08:30:10

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

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

转自:http://rubyer.me/blog/1613/ 单个文件中查找替换很简单,就不说了.文件夹下所有文件中字符串的查找替换就要记忆了,最近部署几十台linux服务器,记录下总结. 查找文件夹下包含字符串的文件 例:查找/usr/local目录下所有包含”rubyer.me”的文件. grep -lr 'rubyer.me' /usr/local/* vim替换单个文件中所有字符串方法 例:替换当前文件中所有old为new :%s/old/new/g #%表示替换说有行,g表示替换一行中

linux查找并替换命令

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

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

vim是Linux系统下常用的文本编辑,通过使用多种shell命令能够实现多文件的查找和替换,那么具体会使用到那些命令呢?下面小编就给大家介绍下Linux系统vim多文件查找和替换的方法. 在linux平台上,有很多优秀的shell命令组合来做多文件查找/替换,比如这些命令:find,sed,grep,awk,perl.但其他平台比如windows上就没那么方便了,这时候vim内置的多文件查找命令就有用武之地了,虽然比起外部命令来稍微慢了一点. vim 多文件查找 这个vim内置命令就是vimg

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

linux shell 字符串操作(长度,查找,替换,匹配)详解 在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快. 一.判断读取字符串值 表达式 含义 ${var} 变量var的值, 与$var相同     ${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${va

Mac上通过Linux命令行批量查找和替换文本

一般在本地电脑上批量替换文本有许多工具可以做到,比如Emeditor,sublime text ,但在linux和mac上相关的编辑器有这个功能的不多,另外大多服务器上都是无图形界面的,因此收集了几条针对linux命令行备忘,实现批量替换文本内容的命令: 批量查找某个目下文件的包含的内容 grep -rn "要找查找的文本" ./ 通过sed批量查找并替换文件内容. sed -i "s/要找查找的文本/替换后的文本/g"grep -rl "要找查找的文本&

linux 查找替换

#   grep -rn "要找查找的文本" ./ 2.批量查找并替换文件内容. #   sed -i "s/要找查找的文本/替换后的文本/g" `grep -rl "要找查找的文本" ./` --------------------------------------------------------------------------------------------------------------------------- 对于单个

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

作为一个以前没怎么接触过linux的小白,开始使用linux,各种不习惯,这周遇到一个文件内容测查找和替换的需求.学习了以下几种实现方式: 1.vi命令下的查找和替换 1.1 vi下的查找 /pattern<Enter> :向下查找pattern匹配字符串 ?pattern<Enter>:向上查找pattern匹配字符串使用了查找命令之后,使用如下两个键快速查找:n:按照同一方向继续查找N:按照反方向查找pattern是需要匹配的字符串,例如:/name<Enter> 

Linux批量查找与替换

Linux批量查找并替换文件夹下所有文件的内容 经常要使用到 Linux的批量查找与替换,这里为大家介绍使用 sed 命令和 grep 命令的结合来实现查找文件中的内容并替换. 语法格式: sed -i "s/原字符串/新字符串/g" `grep -rl 原字符串 所在目录` 实例: 1.实现批量查找当前目录下包含 baidu 字符串的所有文件,例如: grep -rn "baidu" ./ 2.实现批量查找并替换当前文件夹下的包含 baidu.com 字符串的所有

linux vim的使用快捷键之查找与替换

查找 /csdn      向下查找一个名称为csdn的字符串 ?csdn   向上查找一个名称为csdn的字符串 n      n是英文字母,表示向下继续查找前一个查找的操作(和上面的操作配合使用) N     N是英文字母,表示向上继续查找前一个查找的操作(和上面的操作配合使用) 替换 :n1,n2s/word1/word2/g n1和n2为数字.表示在n1和n2行之间查询word1,并将这个字符串替换为word2. 例如: :10,20s/csdn/good/g 表示在10到20行之间,把