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的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. - ...
随机推荐
- poj2342 Anniversary party
Anniversary party Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8028 Accepted: 4594 ...
- mysql 查询排名 返回值拼接的骚操作
故事背景: 依照原系统的框子搞一个新的系统给其他人使用,因为新的系统配置库依然需要使用原有的表,表中有字段区分新的系统,然后就有了这个很没劲的数据同步. 难点:配置库码表数据的主键之前是自增,后来改造 ...
- linux_rename命令用法
rename在man中的解释为: NAME rename - rename files SYNOPSIS rename [options] expression replacement file... ...
- AVL树C++实现(插入,删除,查找,清空,遍历操作)
AVL.h文件代码 #pragma once #include<iostream> #include<stack> #include <assert.h> usin ...
- 学习 yjango 博士的学习方法后的总结
博士的初期内容主要是机器学习, 基于机器学习的理论来总结人类自身的学习过程和方式, 现总结博士视频中提到的主要方式 -. 学习的原则 例子重塑大脑 明确输入输出 用二阶知识拆分知识 二. 什么是学习 ...
- winform做的excel与数据库的导入导出
闲来无事,就来做一个常用的demo,也方便以后查阅 先看效果图 中间遇到的主要问题是获取当前连接下的所有的数据库以及数据库下所有的表 在网上查了查,找到如下的方法 首先是要先建立一个连接 _connM ...
- Jmeter使用之-断言
添加响应断言 ,一般下面这样选择断言的设置就可以了 个人习惯是直接从响应数据中直接复制正确的接口返回值到断言的测试模式中,如下 !!!但是这样复制的是有问题的 ,需要在测试模式中去掉 ...
- vue项目搭建步骤
https://blog.csdn.net/echo008/article/details/77099058 https://blog.csdn.net/echo008/article/details ...
- JMeter已传值但是提示为空
登录时已经传值了,可是一直提示为空 解决:在在请求的url中拼接上参数
- JAVA:IDEA使用Junit(3)
1.配置 File ——> Project Structure ——> Libraries ——> + ——>搜索Junit类库 确认ok即可 2.编辑项目 选择创建 配置生成 ...