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的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. - ...
随机推荐
- oracle ORA-01991错误--重建密码文件问题
问题现象描述: 统计服务器测试没问题,刚好上次配置系统的时候有点问题,故重装一次,配置好安全策略(最近在研究如何新配置一台服务器的时候,第一时间配置好相关的安全设置,有空再写下来). 为了省事,直接冷 ...
- Mysql 数据库开发规范
设计范式参看,DDL与DDL 库表基础规范 1.注释 每个表要添加注释,对 status 型需指明主要值的含义,如”0-离线,1-在线” 2.表的字段数量 单表字段数一般考虑上限为 30左右,再多的话 ...
- 11 vs2015 连接oracle 11g 数据库及相关问题
1.下载Oracle Developer Tools for Visual Studio 2015 ,网址如下. http://www.oracle.com/technetwork/topics/do ...
- windows安装tomcat
1.打开官网http://tomcat.apache.org/ 2.在左侧的导航栏Download下方选择最新的Tomcat 9,点击页面下方的“ 64-bit Windows zip (pgp, m ...
- c3p0 空指针异常 com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@11d9f05 -- Acquisition Attempt Failed!!! C ...
- httpClient实例--返回响应部分并且转换成对象
import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import ja ...
- kubernetes组成
kubernetes组成 k8s主要包括: kubectl 客户端命令行工具: 将接收的命令,发送给kube-apiserver,作为对整个平台操作的入口. kube-apiserver REST A ...
- Java 批量下载excel,并对excel赋值,压缩为zip文件(POI版)
package com.neusoft.nda.servlet; import java.io.File;import java.io.FileInputStream;import java.io.F ...
- AttributeError: 'int' object has no attribute 'isdigit'(python下的isdigit函数)
python下的isdigit函数: isdigit() 方法检测字符串是否只由数字组成. 语法 isdigit()方法语法: str.isdigit() 示例代码如下: 结果: 我想说的重点在于 ...
- 泡泡一分钟:Semantic Labeling of Indoor Environments from 3D RGB Maps
张宁 Semantic Labeling of Indoor Environments from 3D RGB Maps Manuel Brucker, Maximilian Durner, Ra ...