sed Demo
@1:sed basic usage:
和AWK一样, sed也是逐行对文本进行处理. sed的主要功能如下:
@1:对每行中的匹配项进行处理(修改/删除)
@2:格式化文本的处理
@3:(行的增删改):整行(指定行或匹配行)替换/在指定位置(指定行或匹配行)添加整行文本/删除整行(指定行或匹配行)
#!/bin/bash
#File: sedDemo.sh
#Author: lxw
#Time: --
#Usage: Demonstration for sed. #NOTE: use " instead of ' in sed.
echo "Demo -----------------------"
sed "s/Chen Hao's/my/g" pets.txt echo "-i选项: 修改文件本身-----------------------"
sed -i "s/my/Chen Hao's/g" pets.txt echo "\<fish:以fish开头 -------------------------"
sed "s/\<fish/FISH/g" pets.txt
echo "sh\>:以sh结尾-------------------------"
sed "s/sh\>/SH/g" pets.txt echo "s匹配替换-----------------"
echo "第3行-------------------"
sed "3s/Chen/CHEN/g" pets.txt
echo "3-6行(既包括第3行,又包括第6行)-------------------"
sed "3,6s/Chen/CHEN/g" pets.txt
echo "i -> I: 每行的第一个i-------------------"
sed "s/i/I/1" pets.txt
echo "i -> I: 每行的第2个i(包括第2个i)以后的i --> 不是第2个字母-------------------"
sed "s/i/I/2g" pets.txt echo "多个s匹配-----------------"
sed "1,3s/Chen/CHEN/g; 5,10s/This/That/g" pets.txt
echo "上面的命令等价于这条命令--------------------"
sed -e "1,3s/Chen/CHEN/g" -e "5,10s/This/That/g" pets.txt
#sed -e "1,3s/Chen/CHEN/g" -e "5,$s/This/That/g" pets.txt #$字符的使用有点儿问题 echo "&字符的使用-------------------"
sed "s/Chen/[&]/g" pets.txt #圆括号括起来的正则表达式所匹配的字符串可以当成变量来使用,sed中使用的是\,\
echo "sed的格式化文本处理-----------"
sed "s/This is my \([^,]*\),.*is \(.*\)/---\1:\2---/g" my.txt echo "N命令: 只匹配奇数行---------------------------"
sed "N;s/my/your/" my.txt
echo "每两行和并为一行(例如:第一行和第二行合并,但第二行和第三行不合并)----"
sed "N;s/\n//" pets.txt #a命令和i命令
echo "第一行前面添加一行-----------------"
sed "1 i This is my monkey, my monkey's name is wukong" my.txt
echo "最后一行后面添加一行-----------------"
sed "$ a This is my monkey, my monkey's name is wukong" my.txt
echo "在匹配到/my/的行后面添加一行-----------------"
sed "/my/a This is my monkey, my monkey's name is wukong" my.txt #只要这一行中有匹配的字符串就会添加 echo "c命令: 整行替换,替换匹配行-----------------"
echo "替换第1行-----------------"
sed "1 c This is my monkey, my monkey's name is wukong" my.txt
echo "匹配到/fish/的行-----------------"
sed "/fish/c This is my monkey, my monkey's name is wukong" my.txt echo "d命令: 删除匹配行-----------------"
sed "1d" my.txt
echo "删除匹配到/fish/的行-----------------"
sed "/fish/d" my.txt
#sed "2,$d" my.txt #$字符的使用有点儿问题 echo "p命令: 打印匹配行----------------------"
echo "匹配fish并输出,fish行被输出了两遍,因为sed处理时会把处理的信息输出----"
sed "/fish/p" my.txt
echo "-n选项: 只输出匹配行------------------------"
sed -n "/fish/p" my.txt
echo "从cat到fish的行,而不仅仅是cat和fish行------------------------"
sed -n "/cat/,/fish/p" my.txt
echo "从第一行打印到匹配fish的行-------------------"
sed -n "1,/fish/p" my.txt
echo "+3表示后面连续3行------------------"
sed "/dog's/,+3s/^/# /g" pets.txt echo "对3行到第6行,执行命令/This/d---------"
sed "3,6{/This/d}" pets.txt
echo "对3行到第6行,匹配/This/成功后,再匹配/fish/,成功后执行d命令---------"
sed "3,6{/This/{/fish/d}}" pets.txt
echo "从第一行到最后一行,如果匹配到This,则删除之;如果前面有空格,则去除空格(tab不行,多个空格可以)----"
sed "1,10{/This/d; s/^ *//g}" pets.txt #NOTE: 用这个例子学习*的作用。
@2: sed 中的N命令
lxw@lxw-PC:~/lxw_Documents$ cat my.txt
This is my cat,my cat's name is betty
This is my dog,my dog's name is frank
This is my fish,my fish's name is george
This is my goat,my goat's name is adam
lxw@lxw-PC:~/lxw_Documents$ sed "s/my/your/" my.txt
This is your cat,my cat's name is betty
This is your dog,my dog's name is frank
This is your fish,my fish's name is george
This is your goat,my goat's name is adam
lxw@lxw-PC:~/lxw_Documents$ sed "s/my/your/g" my.txt
This is your cat,your cat's name is betty
This is your dog,your dog's name is frank
This is your fish,your fish's name is george
This is your goat,your goat's name is adam
lxw@lxw-PC:~/lxw_Documents$ sed "N;s/my/your/" my.txt
This is your cat,my cat's name is betty
This is my dog,my dog's name is frank
This is your fish,my fish's name is george
This is my goat,my goat's name is adam
lxw@lxw-PC:~/lxw_Documents$ sed "N;s/my/your/g" my.txt
This is your cat,your cat's name is betty
This is your dog,your dog's name is frank
This is your fish,your fish's name is george
This is your goat,your goat's name is adam
@3: 使用到的两个示例文件的内容如下:
my.txt
This is my cat,
my cat's name is betty
This is my dog,
my dog's name is frank
This is my fish,
my fish's name is george
This is my goat,
my goat's name is adam
pets.txt
This is my cat, my cat's name is betty
This is my dog, my dog's name is frank
This is my fish, my fish's name is george
This is my goat, my goat's name is adam
Reference:
sed简明教程:http://coolshell.cn/articles/9104.html
sed Demo的更多相关文章
- (五)Linux之文件与目录管理以及文本处理
Linux之文件与目录管理 目录 Linux之文件与目录管理 前言 绝对路径与相对路径说明: 一.目录常用命令 常用处理目录的命令: 切换目录 cd 显示当前路径 pwd 查看目录下文件 ls 创建目 ...
- linux grep,sed,awk和diff的使用
1:grep//显示行 # grep 'main' /home/myhome/a.c//将a.c含有main的行显示出来 # grep -v 'main' /home/myhome/a.c //显示除 ...
- Unix sed实用教程系列目录[已完成]
本系列文章已经译完了,译自awk-sed@theunixschool,收获颇丰,作者没有讲明白的我做了补充,并且尝试讲的更清楚,整理成系列索引,方便学习,开篇非译文,是我为了方便后面的理解写的一篇,感 ...
- sed and awk学习笔记
sed and awk 背景 awk起源追溯至sed和grep,进而追溯至共同的行编辑器ed.实用工具grep来源于ed命令:g/re/p .实用工具awk和sed有一个共同的选项-f用于指定脚本的名 ...
- html5+css3 文章的展示demo
index.html 页面的样式 <!DOCTYPE html><html lang="en"> <head> <title>l ...
- Linux文件格式化与相关处理及sed工具
http://blog.csdn.net/pipisorry/article/details/52564957 geditor, sed, ed, awk, Emacs 文本处理工具 [Linux S ...
- Linux文本三剑客超详细教程---grep、sed、awk
awk.grep.sed是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之一.三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂.grep更适合单 ...
- 响应式bootstrap - demo
参考资料: bootstrap:http://www.bootcss.com/ 汤姆大叔的博客: <深入理解Bootstrap>http://item.jd.com/11462962.ht ...
- Linux sed使用方法
目录 sed处理流程 测试数据 sed命令格式 sed命令行格式 行定位 定位1行 定位区间行(多行) 定位某一行之外的行 定位有跨度的行 操作命令 -a (新增行) -i(插入行) -c(替代行) ...
随机推荐
- FPGA开发要懂得使用硬件分析仪调试——ILA
0. ILA概述在FPGA开发中,当我们写完代码,进行仿真,确定设计没有问题后,下载到硬件上一般都能按照我们的设计意愿执行相应功能.但这也并非绝对的,有时候你会遇到一些突然情况,比如时序问题或者仿真时 ...
- LINUX内核升级-更新网卡驱动
因项目需要,将当前内核(2.6.32-220.el6.x86_64)升级到目标内核(2.6.33-110.el6.x86_64),但是编译的目标 内核(2.6.33-110.el6.x86_64)的对 ...
- 如何居中div?
如何居中div? 水平居中 1 //给div设置一个宽度,然后添加margin:0 auto属性 2 3 div{ 4 width:200px; 5 margin:0 auto; 6 } 让绝对定位的 ...
- Windows下使用Visual Studio 2010 编译ffmpeg全过程
(注意:请务必先阅读:七,后记补充:) ffmpeg是一个开源的多媒体库,使用非常广泛. 在linux下编译ffmpeg非常简单,而在windows下编译就不是那么容易了.一般在windows下使用M ...
- OpenCV学习笔记十四:opencv_objdetect模块
一,简介: 该库用于目标检测.
- PDO drivers no value in Windows
学习php编程遇到 Uncaught exception 'PDOException' with message 'could not find driver' 或者 Undefined class ...
- 那些可爱的 Linux 命令
环境 root@15b883:~# uname -a ##需要是Ubuntu环境 Linux 15b883 --generic #- :: UTC x86_64 x86_64 x86_64 GNU/L ...
- selenium的元素定位-iframe
# name = top-frame # 如果iframe有name属性 或 id属性则 可以直接在frame种填写 # 如果没有name和id属性 frame() 可以接受elementOBj el ...
- 海康、大华NVR网络硬盘录像机录像无插件全平台访问实现—录像回放时间轴功能实现方法
在之前的博文中我们有介绍方案*NVR硬件录像机web无插件播放方案(支持取特定时间段视频流)*:该片博文旨在介绍时间轴功能的实现和相关接口的调用: 时间轴样式展示: 问题分析 对于 时间轴的展示实现需 ...
- Java中,由this关键字引发的问题
很久之前一直有一个疑问,最近重新翻了遍JVM的书,才算是终于有所顿悟.问题如下: 被自己遗忘的问题 package org.hanyan.test.testClass; public class T3 ...