Linux--shell三剑客<sed>--07
1、sed(stream editor):
作为行编辑器,对文本进行编辑(以行为单位)
默认显示输出所有文件内容
注意:sed编辑文件,却不改变原文件
2、sed的工作原理:
指定一个文本文件,依次读取文本文件每行的内容,读取到模式空间中(PATTERN SPACE),在模式空间中进行文本匹配,对匹配后的内容进行修改(替换、删除、打印、修改、保存等等)
3、用法:
sed [参数] “sed自己独立的用法格式语句” [文本文件]
4、常见参数
-r 指定扩展的正则表达式
-n 拒绝默认显示
-e script 后面接脚本文件
-f 指定脚本文件
-l 指定文本的换行长度
-i 直接修改文件内容***危险
5、地址定界
a) 直接匹配数值 sed -n ‘5p’ /etc/passwd
b) 指定步长n~m n为起始数字,m为步长 sed -n ‘1~3p’ /etc/passwd
c) $指定行尾 sed -n ’10,$p’ /etc/passwd
d) /正则表达式/ /正则/,/正则/ sed -n ‘/t\{1,\}/,$p’ /etc/passwd
e) 0,addr sed -n ‘0,/t\{1,\}/,$p’ /etc/passwd 匹配0行到正则行
f) addr,+N 匹配addr行到,addr后N行 sed -n ‘/root/,+2p’ /etc/passwd
6、常见命令
p print 打印(默认在题目上显示出来),建议和 -n 一起使用
c 替换行 sed “/被替换的值/c \替换的值” 文件
d 删除 sed “/被删除的值/d 文件 sed “1,3d” 文件 删除1-3行
n/N 读取/添加 模式匹配到的行的下一行内容,在对其进行操作
w 保存文件内容到一个新的文件
s 文本内容替换,默认替换模式空间匹配的第一项,其他不替换
格式:s/pattern/字符串/ 把pattern匹配 的内容替换为字符串
例子 sed “s/r/R/” /etc/etc/passwd 只替换了每行第一个r
g 全部 sed “s/r/R/g” /etc/passwd 把文件中的所有r换为R
\1 \2 \3… 和正则表达式的分组相同,实现反向应用;指定某一个匹配项进行修改匹配
& 调用前面匹配的内容 sed “s/test/&er/g” /etc/passwd 把test开头的所有后面加er后缀
练习:
1、删除/boot/grub/grub.conf文件中所有空白开头的行行首的空白字符
sed 's/^[[:space:]]\+//' /boot/grub/grub.conf
2、删除/etc/fstab文件中所有以#开头,后面最少跟着一个空白字符的行的行首的#和空白字符
sed 's/^#[[:space:]]\+//' /etc/fstab
3、给定一个目录,取出其目录名
dirname /var/log/message #dirname命令提取路径的目录名部分
#或者
echo '/var/log/message' | sed 's/[^/]\+$//'
4、给定一个目录,取出其目录名
basename /var/log/message #basename命令提取路径的文件名部分
#或者
echo '/var/log/message' | sed 's#^/.*/)##'
Linux--shell三剑客<sed>--07的更多相关文章
- Linux shell利用sed如何批量更改文件名详解[转载]
需求背景: 目录A用来存放自动化的包生成的apk文件,现在开发修改了包名的 命名规则:环境名称(pro|uat)-release-日期-v版本号.apk 原来的是思路是通过正则表达式匹配新的包名,但 ...
- linux shell 用sed命令在文本的行尾或行首添加字符
转自 http://www.cnblogs.com/aaronwxb/archive/2011/08/19/2145364.html 昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed ...
- Linux Shell编程 sed命令
概述 sed 是一种几乎可以应用在所有 UNIX 平台(包括 Linux)上的轻量级流编辑器,体积小.所以,它可以对从如管道这样的标准输入中接收的数据进行编辑. sed 主要是用来将数据进行选取.替换 ...
- Linux shell之sed
sed编辑器逐行处理输入,然后把结果发送到屏幕. -i选项:直接作用源文件,源文件将被修改. sed命令和选项: a\ 在当前行后添加一行或多行 c\ 用新文本替换当前行中的文本 d 删除行 i\ 在 ...
- Linux shell用sed批量更改文件名的相关内容
示例 去除特定字符 目标:将指定目录下文件名中sprint替换为dev 方法: [root@Skip-ftp test]# for i in `ls` > do > name=`echo ...
- Linux文本三剑客-sed
sed工作原理: sed: Stream Editor.流编辑器 --- 属于行编辑工具 sed和vim一样都是文本编辑工具. 行编辑工具:一行一行处理文件内容 全屏编辑工具:一次性将文件内容加载到内 ...
- 005 Linux 命令三剑客之-sed
grep:数据查找定位 awk:数据切片,数据格式化,功能最复杂 sed:数据修改 01 Linux 命令三剑客? 三剑客各有所长,和锅锅一一搞起就是了! sed:擅长数据修改. grep:擅长数据查 ...
- linux shell 修改文本 sed
linux shell 修改文本echo [root@DSI tmp]# echo 'yhqt1 test1' > test1.txt [root@DSI tmp]# cat test1.txt ...
- Linux shell multifile content replace with sed
#!/bin/bash # Linux shell multifile content replace with sed # 声明: # 本源代码主要是利用两份(中.英文)具有相同键值对的json数据 ...
随机推荐
- 【noip2016提高组day2T3】【愤怒的小鸟】状压dp转移时的集合包含
(上不了p站我要死了,图来自百度,侵权度娘背锅) 调死我了... 标题就说明了,死在了集合包含上.因为这道题与其他的状压题不同,其他的题基本上都是要求集合不重合,而这道题完全是可以的. 废话不多说,先 ...
- C++ 对象间通信框架 V2.0 ××××××× 之(四)
类定义:CMemberFuncPointer ======================================================================= // Me ...
- [LOJ2289][THUWC2017]在美妙的数学王国中畅游:Link-Cut Tree+泰勒展开
分析 又有毒瘤出题人把数学题出在树上了. 根据泰勒展开,有: \[e^x=1+\frac{1}{1!}x+\frac{1}{2!}x^2+\frac{1}{3!}x^3+...\] \[sin(x)= ...
- Oracle Fetch子句
Oracle Fetch子句 作者:初生不惑 Oracle基础 评论:0 条 Oracle技术QQ群:175248146 在本教程中,将学习如何使用Oracle FETCH子句来限制查询返回的行数. ...
- 8 Django 模型层(2)
知识预览 多表操作 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型 ...
- 使用ZeroTier搭建大局域网利用VNC远程桌面
ZeroTier One.msi VNC Server 6.4.1 VNC Viewer 6.19.325 Network ID 83048a0632e88e16
- leetcode-mid-array-31 three sum-NO
my code: time limited def threeSum(nums): """ :type nums: List[int] :rtype: List[L ...
- Ueditor1.4.4 Jsp版本视频上传成功,重新编辑时无法打开、在文本框内无法显示、html源码显示src为空
1. 编辑 ueditor.config.js 第355行 将 whitList 改为 whiteList 2.编辑ueditor.all.js 注释掉7343.7344.7345行代码,即: var ...
- python字典小知识
字典的小知识dic = {"name": "tom", "age": 23, "price": 110}# 01:提取键 ...
- 002-Spring4 快速入门-项目搭建、基于注解的开发bean,Bean创建和装配、基于注解的开发bean,Bean初始化销毁、Bean装配,注解、Bean依赖注入
一.项目搭建 1.项目创建 eclipse→project explorer→new→Project→Maven Project 默认配置即可创建项目 2.spring配置 <dependenc ...