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(替代行) ...
随机推荐
- MSP430WARE++的使用3:modbus模块的调用方法
MSP430WARE++的使用3:modbus模块的调用方法 MSP430WARE是一套基于C++语言的开源的MSP430层次化软件架构,支持多种外设. 本文将介绍modbus模块驱动程序的调 ...
- vue 过渡的-css-类名
会有6个css类名在leave/enter过渡中切换 1,v-enter:定义进入过渡的开始状态,在元素被插入时生效,在下一帧中移除 2,v-enter-active:定义过渡的状态.在元素整个过渡过 ...
- TCP/IP笔记(一)网络基础知识
计算机与网络发展 计算机自诞生伊始,经历了一系列演变与发展.大型通用机计算机.超级计算机.小型机.个人电脑.工作站.便携式电以及现如今的智能手机终端都是这一过程的产物.它们性能逐年增强,价格却逐年下降 ...
- IOS设计模式浅析之外观模式(Facade)
引言 在项目开发中,有时候会遇到这样的一种情景:已有系统的各个子系统之间,随着业务需求的发展,有了比较紧凑的耦合关系.现在需要利用这些子系统的功能,为移动端提供业务处理.我们该怎么应对这样的业务需求呢 ...
- Linux 总结2
cd pwd mkdir ...
- Java连接Sql Server 2008的简单数据库应用
1.从微软官网下载JDBC驱动包 sqljdbc_4.0.2206.100_chs.exe,双击解压文件到指定目录,我的指定目录是: C:\Program Files\Microsoft JDBC D ...
- POJ3694-Network(Tarjan缩点+LCA)
题目链接 题意:给你一个连通图.然后再给你n个询问,每一个询问给一个点u,v表示加上u,v之后又多少个桥. 思路:用Tarjan缩点后,形成一棵树,所以树边都是桥了.然后增加边以后,查询LCA,LCA ...
- MathType可以编辑省略号吗
说到省略号大家可能会想到写文章的时候会用到,其实在数学中也会常常的使用到.当数学过程是重复有规律性的过程时,就会用到它.MathType是一款数学公式编辑器,那么,在数学公式中,MathType编辑时 ...
- day5笔记
一.上节回顾: 1,find通过元素找索引,可切片,找不到返回-12,index,找不到报错.3,split 由字符串分割成列表,默认按空格.4,captalize 首字母大写,其他字母小写.5,up ...
- PDO drivers no value in Windows
学习php编程遇到 Uncaught exception 'PDOException' with message 'could not find driver' 或者 Undefined class ...