shell 三剑客之 sed 命令详解
sed 编辑命令
sed 编辑命令对照表
把 /etc/passwd 文件赋值到当前路径下,进行操作
cp /etc/passwd ./
cat -n passwd
sed 删除操作
删除 passwd 文件的第一行
sed -i '1d' passwd
删除 1-3 行
sed -i '1,3d' passwd
删除不能登录的用户,即 /sbin/nologin
sed -i '/\/sbin\/nologin/d' passwd
删除以mail开头一直到以 ftp开头的行
sed -i '/^mail/,/^ftp/d' passwd
sed 增加操作
在/bin/bash 行后面追加一句话 This is user which can login to system
sed -i '/\/bin\/bash/a This is user which can login to system' passwd
行前追加 在 root 和 nginx之间所有行之前追加 AAAAAAAAAAAAAAAAAAAA
sed -i '/^root/,/^nginx/i AAAAAAAAAAAAAAAAAAAA' passwd
查找passwd文件中所有root的行,读取 list 的内容追加到其后面
cat list
sed -i '/root/r list' passwd
在passwd文件中将匹配到的 /bin/bash 行写入到 /tmp/user_login.txt 文件中
sed '/\/bin\/bash/w /tmp/user_login.txt' passwd
sed 修改操作
修改:
- s/pattern/string/ 查找并替换,查找符合pattern模式的字符串,将其替换为string 适配(一、二、三、四、五)
- s/pattern/string/g g表示表示全部匹配
- s/pattern/string/2g 2g表示:同一行内,只替换前两个匹配到的,剩下的不替换
- s/pattern/string/ig 加i参数表示匹配时忽略大小写,g表示匹配到的全部替换
把 /bin/bash 全部替换为/BIN/BASH
sed -i 's/\/bin\/bash/\/BIN\/BASH/g' passwd
只替换第一个root为ROOT
sed -i 's/root/ROOT/' passwd
只替换 一行的第二个
cat str.txt
sed -i 's/HADOOP/hadoop/2' str.txt
反向引用
把匹配到的内容原封不动的保留下来
cat file.txt
sed -i 's/Had..p/&s/g' file.txt
\1 也可以表示前面匹配到的内容 (比 & 更加灵活)
sed -i 's/\(had..ps\)/\1R/g' str.txt
定义变量的时候如果使用单引号 ' 不会引用变量,注意需要使用双引号"$var"
sed 命令用法总结
查询:
- p 打印
删除:
- d 删
增加:
- a 匹配到的行后追加内容
- i 匹配到的行前追加内容
- r 将后面指定文件的内容追加到匹配到的行后面
- w 将匹配到的行内容另存到其他文件中
修改:
- s/pattern/string/ 查找并替换,查找符合pattern模式的字符串,将其替换为string 适配(一、二、三、四、五)
- s/pattern/string/g g表示表示全部匹配
- s/pattern/string/2g 2g表示:同一行内,只替换前两个匹配到的,剩下的不替换
- s/pattern/string/ig 加i参数表示匹配时忽略大小写,g表示匹配到的全部替换
其他编辑命令:
- = 显示行号
什么是反向引用
- &和\1 引用模式匹配到的整个串
在file中搜寻以1开头,然后跟两个任意字符,以e结尾的字符串
sed "s/1..e/&r/g" file
和上面实现一样的功能,使用\1代表搜寻到的字符串
sed "s/\(1..e\)/\1r/g" file
上面两种方式实现了一样的功能,分别使用&和\1引用前面匹配到的整个字符串 两者区别在于&只能表示匹配到的完整字符串,只能引用整个字符串:而\1可以使用()对匹配到的字符串进行二次操作
例如:如果我们仅想要替换匹配到的字符串的一部分,name必须使用\1这种方式,不能使用&
sed中引用变量时注意事项:
- 1、匹配模式中存在变量,则建议使用双引号
- 2、sed中需要引入自定义变量时,如果外面使用单引号,则自定义变量也必须使用单引号
shell 三剑客之 sed 命令详解的更多相关文章
- shell 三剑客之 sed pattern 详解
sed 基础介绍 语法格式 sed 处理过程 sed 选项 cat sed.txt '-p' 打印输出 ,默认输出两次,流输出一次,源文件输出一次 sed 'p' sed.txt -n 只显示处理的 ...
- sed命令详解 vim高级技巧 shell编程上
第1章 sed命令详解 1.1 查找固定的某一行 1.1.1 awk命令方法 [root@znix ~]# awk '!/oldboy/' person.txt 102,zhangyao,CTO 10 ...
- Linux shell sed 命令详解
详细的sed命令详解,请参考https://my.oschina.net/u/3908182/blog/1921761 sed命令常见用途 查找关键词做全局替换 查找某行的关键词做替换 查找关键字所在 ...
- 转 linux之sed命令详解
http://jingyan.baidu.com/article/fec4bce2228f60f2618d8bb0.html sed 编辑裁剪文件命令 sed -i "s/\/db\/te ...
- Linux学习之sed命令详解
概述 sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区 ...
- shell编程之awk命令详解
shell编程之awk命令详解 a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; out ...
- 【转】【Linux】sed命令详解
sed命令详解 sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令 ...
- sed命令详解 (转载)
sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内 ...
- 【文本处理命令】之sed命令详解
sed行处理命令详解 一.简介 sed命令是一种在线编辑器.一个面向字符流的非交互式编辑器,也就是说sed不允许用户与它进行交互操作.sed是按行来处理文本内容的,它一次处理一行内容.处理时,把当前处 ...
随机推荐
- Java8的时间日期API
原先的时间 api 大部分已经过时了 Date构造器 需要传入年月日 但是对时间的加减操作比较麻烦 Calenda 加减比较方便 使用 LocalDate. LocalTime. LocalDa ...
- nginx调优(一)
(1).隐藏nginx版本号 隐藏版本号可以有效避免黑客根据nginx版本信息,查找对应漏洞进行攻击. 下载nginx源码包(http://nginx.org/en/download.html)并上传 ...
- Python json序列化时default/object_hook指定函数处理
在Python中,json.dumps函数接受参数default用于指定一个函数,该函数能够把自定义类型的对象转换成可序列化的基本类型.json.loads函数接受参数objec_thook用于指定函 ...
- 从零开始封装React UI 组件库并发布到NPM
github 开源地址:zswui github 说明文档:wiki 1.新建目录wui (1)进入到 wui 目录 执行 npm init 命令初始化项目.更具提示信息填充将会生成的 package ...
- kafka如果有多个patition,消费消息的时候消息是没有顺序的
创建一个2个分区,3个副本的topic,名字叫first kafka-topics.sh --create --zookeeper datanode1:2181 --partitions 2 --r ...
- Linux18.04换源等等等配置
root用户 sudo passwd root 安装Tools 文件→其他位置→Vmware Tools→打开终端. 管理员权限→copy→tar -zxvf 文件名解压→打开vmware-tools ...
- 2019年Java面试题基础系列228道(5)
21.存在两个类,B 继承 A,C 继承 B,我们能将 B 转换为C 么?如 C = (C) B: 这属于强制类型转换,如果被转换的B实例不是C类型,会有异常 比如你的ABC分别对应动物,猫,黑猫. ...
- RocketMQ控制台命令
本文未完成,有空再补充,不小心发布了,抱歉 Rocket版本:4.3.0 这几天在整RocketMQ,可谓是困难重重,其中关于控制台的命令,网上的都是一半一半的, 所以我打算直接用整一个完整的官方的命 ...
- java properties文件转义字符和中文乱码解决
properties文件的分隔符是 =或者 : 第一次出现的就是分割符,第二次出现的也不需要转义,也即是(忽略掉[],只是着重描述字符) [\=] [\:] 或者 [=] [:] ...
- LeetCode 258. 各位相加(Add Digits)
258. 各位相加 258. Add Digits 题目描述 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. LeetCode258. Add Digits 示例: 输入: 3 ...