linux基础之sed
sed: Stream EDitor,行编辑器
用法: sed [option]... 'script' inputfile...
script: '地址命令'
常用选项:
-n: 不输出模式中的内容至屏幕
-e: 多点编辑
-f: /path/to/script_file:从指定文件中读取编辑脚本
-r: 支持使用扩展正则表达式
-i:原处编辑,慎用
地址定界:
1. 不给地址,对全文进行处理
2.单地址
#:指定的行
/pattern/: 被此处模式所能匹配到的每一行
3.地址范围:
#,#
#,+#
/pat1/,/pat2/
4.~:步进
1~2
2~2
编辑命令:
d: 删除
# sed /^UUID/d /tmp/fstab 删除UUID开头的行
# sed '/^$/d' /tmp/fstab 删除空白行
# sed '1,4d' /tmp/fstab
p: 显示模式空间中的内容
# sed '/^UUID/p' /tmp/fstab
这样会显示两遍,默认会打印模式空间中的内容,可以使用-n不显示模式空间中的内容就只会输出一遍
a \text: 在行后面追加文本,支持使用\n实现多行追加
# sed '/^UUID/a \hello' /etc/fstab 在fstab中UUID行后面添加hello
i \text: 在行前面插入文本,支持使用\n实现多行插入
# sed '/^UUID/i \hello' /etc/fstab 在fstab中UUID行前面插入hello
c \text: 替换行为单行或多行文本
# sed '/^UUID/c \uuid' /etc/fstab 把fstab中UUID改为小写
w /path/to/somefile: 保存模式空间匹配到的行至指定文件中
# sed '/^UUID/w /etc/issue' /etc/fstab 读取fstab中符合UUID的行存放到issue中
r /path/from/somefile:读取指定文件的文本流至模式空间中匹配到的行的行后
# sed '6r /etc/issue' /etc/fstab 读取issue中的内容放到fstab中的第六行行后
=: 为模式空间中的行打印行号
!: 取反条件
s///: 支持使用其他分隔符,s@@@,s###
替换标记
g: 行内全局替换
p: 显示替换成功的行
w /PATH/TO/SOMEFILE: 将替换成功的结果保存至指定文件中
# sed 's@^UUID@uuid@' /tmp/fstab UUID替换为小写
练习1:删除/boot/grub/grub.conf文件中所有以空白开头的行行首的空白字符
# sed 's@^[[:space:]]\+@@' /boot/grub/grub.conf
练习2:删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
# sed 's@^#[[:space:]]\+@@' /etc/fstab
练习3:echo一个绝对路径给sed命令,取出其基名,取出其目录名
# echo "/etc/home/dir/base.name/" | sed 's@[^/]\+/\?$@@'
高级编辑命令
h: 模式空间中的内容覆盖至保持空间中
H: 模式空间中的内容追加至保持空间中
g: 保持空间中的内容覆盖至模式空间
G: 保持空间中的内容追加至模式空间
n: 读取匹配到的行的下一行覆盖至模式空间中
N: 读取匹配到的行的下一行追加至模式空间中
d: 删除模式空间中的行
D: 删除多行模式空间中的所有行
x: 把模式空间中的内容与保持空间中的内容互换
举例:
sed -n 'n;p' FILE:显示偶数行
sed '1!G;h;$!d' FILE: 逆向显示文件内容
sed '$!N;$!D' FILE:取出文件后两行
sed '$!d' FILE: 取出文件最后一行
sed 'G' FILE: 每行下面添加一个空白行
sed '/^$/d;G' FILE 多个空白行合并成一个
sed 'n;d' FILE: 显示奇数行
sed -n '1!G;h;$p' FILE:逆向显示文件中的每一行
linux基础之sed的更多相关文章
- Linux基础命令-Nginx-正则表达式( grep sed awk )-Shell Script--etc
Linux基础使用 学习内容博客 内存 查看swap分区信息 > swapon -s 添加swap分区 > mkswap /dev/sdb2 > 激活 swapon -a /dev/ ...
- 11、Linux基础--sort、uniq、cut、tr、wc、流处理工具sed
笔记 1.晨考 1.写出过滤手机号的正则表达式 1[0-9]{10} 2.写出过滤邮箱的正则表达式 chenyang@123.com [a-zA-Z0-9-_]+@[a-z0-9]+\.(com|cn ...
- Linux echo, sort, sed 等一些命令总结
linux echo, sort, sed是初学linux shell script 的一些常用的命令.基本上来说,如果能够掌握了这些命令,我们就能写出一些不错的linux脚本.以下是我遇到的以下常用 ...
- Linux基础入门
第一节,linux系统简介 一.实验内容 了解 Linux 的历史,Linux 与 Windows 的区别等入门知识. 二.实验要求 阅读linux简介与历史 三.实验步骤 (一).Linux 为何物 ...
- Linux基础入门学习笔记20135227黄晓妍
学习计时:共24小时 读书:1小时 代码:8小时 作业:3小时 博客:12小时 一.学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用L ...
- ###Linux基础 - 2
点击查看Evernote原文. #@author: gr #@date: 2014-10-13 #@email: forgerui@gmail.com 一.Linux基础命令2 mount: 挂载U盘 ...
- Linux 基础(5)
Linux 基础 (五) 一.shell相关知识 shell一般代表两个层面的意思,一个是命令解释器,比如BASH,另外一个就是shell脚本.通过解释器的角度来理解shel 命令分为: ==> ...
- Linux基础 - 系统优化及常用命令
目录 Linux基础系统优化及常用命令 Linux基础系统优化 网卡配置文件详解 ifup,ifdown命令 ifconfig命令 ifup,ifdown命令 ip命令 用户管理与文件权限篇 创建普通 ...
- Linux基础系统优化及常用命令
# Linux基础系统优化及常用命令 [TOC] ## Linux基础系统优化 Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. - ...
随机推荐
- php数组函数大全
一.数组操作的基本函数 数组的键名和值 array_values($arr);获得数组的值 array_keys($arr);获得数组的键名 array_flip($arr);数组中的值与键名互换(如 ...
- 把Oracle由归档模式改为非归档模式
把Oracle由归档模式改为非归档模式 开始–>运行命令cmd进入命令行模式 1. 使用命令sqlplus以无日志形式打开如下: sqlplus /nolog; 2. 连接数据库dev.worl ...
- string find_last_of 用法
int find_first_of(char c, int start = 0): 查找字符串中第1个出现的c,由位置start开始. 如果有匹配, ...
- profile和bashrc四种的区别
Linux下profile和bashrc四种的区别 12160阅读 0评论 /etc/profile./etc/bashrc.~/.bash_profile.~/.bashrc很容易混淆,他们之间有什 ...
- 东大oj1155 等凹函数
Problem Description 定义一种数字称为等凹数字,即从高位到低位,每一位的数字先递减再递增,且该数是一个回文数,即从左读到右与从右读到左是一样的,仅形成一个等凹峰,如543212345 ...
- 自定制property
class Lazyproperty: def __init__(self, func): self.func = func def __get__(self, instance, owner): p ...
- 双系统Windows时间不同步的解决办法
步骤:打开C盘>Windows>System32,找到cmd.exe,右键以管理员的身份运行. Reg add HKLM\SYSTEM\CurrentControlSet\Control\ ...
- Web开发——jQuery基础
参考: 参考W3School:jQuery 教程 参考:jQuery 参考手册 参考(常用):jQuery API 测试 JavaScript 框架库 - jQuery 测试 JavaScript 框 ...
- SQL[Err] ORA-00933: SQL command not properly ended
原文链接:https://www.cnblogs.com/godtrue/p/3784526.html 1:可能SQL语句中关键字前后缺少空格 2:Oracle 给表起别名时,直接在表名的后面空格别名 ...
- MAVEN_day02快速入门
一.MAVEN工程目录结构 二.怎么在Eclipse中集成M2E插件(工欲善其事必先利其器)有一些准备工作 1.修改自己下载的MAVEN 2.设置本地仓库 三.构建MAVEN工程 1.选择“MAVEN ...