Linux —— 查找与替换
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 —— 查找与替换的更多相关文章
- Linux查找和替换目录下所有文件中字符串(转载)
转自:http://rubyer.me/blog/1613/ 单个文件中查找替换很简单,就不说了.文件夹下所有文件中字符串的查找替换就要记忆了,最近部署几十台linux服务器,记录下总结. 查找文件夹 ...
- linux查找与替换练习
查找和替换-举例 删除/tmp/abc文件中第 2 至 5 行的内容 在第 2 行后面添加 123456 这一行 在文件的最后一行前面添加 123456 将文件中的 cat全部替换成 dog 注以上操 ...
- linux查找并替换命令
find ./ -maxdepth 3 -type f -name "*Makefile" |xargs sed -i "s/CXX = g++/CXX = ccac ...
- linux查找和替换命令
http://blog.csdn.net/imyang2007/article/details/8105499 命令的东西应该多练,熟能生巧.
- linux shell 字符串操作(长度,查找,替换)详解
linux shell 字符串操作(长度,查找,替换)详解 在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系 ...
- Linux 查找文件内容、替换
有的时候我们经常性的需要在 linux 某一个目录下查找那些文件里包含我们需要查找的字符,那么这个时候就可以使用一些命令来查找,比如说 grep 1.grep 查询 1.1. 主要参数 [option ...
- linux 批量文件查找并替换
linux 批量文件查找并替换 sed -i "s/oldstring/newstring/g" `grep oldstring -rl path` 如: sed -i " ...
- Linux使用vim进行多文件查找和替换的方法
vim是Linux系统下常用的文本编辑,通过使用多种shell命令能够实现多文件的查找和替换,那么具体会使用到那些命令呢?下面小编就给大家介绍下Linux系统vim多文件查找和替换的方法. 在linu ...
- linux几种常见的文件内容查找和替换命令
作为一个以前没怎么接触过linux的小白,开始使用linux,各种不习惯,这周遇到一个文件内容测查找和替换的需求.学习了以下几种实现方式: 1.vi命令下的查找和替换 1.1 vi下的查找 /patt ...
随机推荐
- 5.1 qbxt 一测 T2
求和[问题描述] 组合数 C(n,m)是从 n 个物品中取 m 个的方案数. C(n,m)=(n!)/(m!(n-m)!) 斐波那契数列 F 满足,F[0]=F[1]=1,n≥2 时 F[n]=F[n ...
- scanf_s读取键盘输入字符串失败
#include<stdio.h> int main() { ]; ]; printf("Input string:\n"); scanf_s("%s&quo ...
- 解决 【xshell 5 不能使用退格键和Delete建】的问题
###按照图片操作即可 1,打开[文件],选择[打开]选项 2.在会话中,打开[属性] 3.点击左边[终端]下的[键盘]选项,按照如下设置 即可.
- 解决Spellchecker inspection helps locate typos and misspelling in your code
idea出现这个是因为词库中没有这个单词,所以提示拼写错误 解决办法:双击下面有虚线的单词——>鼠标右键——>spelling——>save 'xxx' to distionary
- 19. REFERENTIAL_CONSTRAINTS
19. REFERENTIAL_CONSTRAINTS REFERENTIAL_CONSTRAINTS表提供有关外键的信息. REFERENTIAL_CONSTRAINTS有以下列: CONSTRAI ...
- docker的网络(基础)
Docker的网络子系统是可插拔的,使用驱动程序.默认情况下存在多个驱动程序,并提供核心网络功能: bridge:docker默认的网络驱动.如果未指定驱动程序,则这是需要创建的网络类型.当应用程序在 ...
- Linux内核学习总览
断断续续学习操作系统已经有大半年时间了,一直想系统地梳理一下. 正好借助<深入Linux内核架构> (Wolfgang Manuere 著,郭旭 译)汇总一下. 首先基础框架篇,Linux ...
- 如何用纯 CSS 创作一种侧立图书的特效
效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/deVgRM 可交互视频教程 此视 ...
- CSRF verification failed. Request aborted. 表单提交方法为POST时的报错
本人所用Django版本为1.11,在设置请求方法为POST时,遇到标题中的错误,尝试了多种方法,最终通过下面的操作来修复: 在template文件中添加图中红框部分 接着,导入csrf_exempt ...
- python测试工具
https://wiki.python.org/moin/PythonTestingToolsTaxonomy mac pip安装 https://blog.csdn.net/ywj_486/arti ...