`
ouhi2008
  • 浏览: 6907 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

sed Tutorial

 
阅读更多

1.s option

$ cat 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 

sed "s/my/Fei's/g" pets.txt
sed "s/my/Fei's/g" pets.txt > fei_pets.txt
sed -i "s/my/Fei's/g" pets.txt
sed 's/^/#/g' pets.txt
sed 's/$/ --- /g' pets.txt

 

regex tips:
^ 表示一行的开头。如:/^#/ 以#开头的匹配。
$ 表示一行的结尾。如:/}$/ 以}结尾的匹配。
\< 表示词首。 如 \<abc 表示以 abc 为首的詞。
\> 表示词尾。 如 abc\> 表示以 abc 結尾的詞。
. 表示任何单个字符。
* 表示某个字符出现了0次或多次。
[ ] 字符集合。 如:[abc]表示匹配a或b或c,还有[a-zA-Z]表示匹配所有的26个字符。如果其中有^表示反,如[^a]表示非a的字符

 

$ cat html.txt:
<b>This</b> is what <span style="text-decoration: underline;">I</span> meant. Understand?

 

sed 's/<[^>]*>//g' html.txt
=>This is what I meant. Understand?

sed "3s/my/your/g" pets.txt    #replace third row
sed "3,6s/my/your/g" pets.txt  #replace third to sixth rows

 

$ 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

sed 's/s/S/1' my.txt   #replace only first  's'
sed 's/s/S/2' my.txt   #replace only second 's'
sed 's/s/S/3g' my.txt  #replace after third(contain) 's'

 

$ sed 's/\<Thi/Tha/g' my.txt 
Thas is my cat, my cat's name is betty 
Thas is my dog, my dog's name is frank 
Thas is my fish, my fish's name is george 
Thas is my goat, my goat's name is adam 

$ sed 's/his\>/hat/g' my.txt 
That is my cat, my cat's name is betty 
That is my dog, my dog's name is frank 
That is my fish, my fish's name is george 
That is my goat, my goat's name is adam 

 

2.Multiple matching
sed '1,3s/my/your/g; 3,$s/This/That/g' my.txt
sed -e '1,3s/my/your/g' -e '3,$s/This/That/g' my.txt
#use & replace matched var
sed 's/my/[&]/g' my.txt

 

3.() matching
#use \1,\2,... replace matched ()
sed 's/This is my \([^,]*\),.*is \(.*\)/\1:\2/g' my.txt

 

4.sed command
1)N  : Read/append the next line of input into the pattern space.
sed 'N;s/my/your/' pets.txt
sed 'N;s/\n/,/' pets.txt

 

2)add new row
a : after append row
i : before insert row
#specify row number,1 first isrow, $ is last row
sed "1 i This is my monkey, my monkey's name is wukong" my.txt
sed "1 a This is my monkey, my monkey's name is wukong" my.txt

#pattern match
sed "/fish/a This is my monkey, my monkey's name is wukong" my.txt
sed "/my/a ----" my.txt

 

3)c : replace matched row
sed "2 c This is my monkey, my monkey's name is wukong" my.txt
sed "2 c This is my monkey, my monkey's name is wukong" my.txt

 

4)d : delete matched rows
sed '/fish/d' my.txt
sed '2d' my.txt
sed '2,$d' my.txt

 

5)p : print rows,like grep
sed -n '/fish/p' my.txt
#print from dog to fish rows
sed -n '/dog/,/fish/p' my.txt
sed -n '1,/fish/p' my.txt
sed -n '/fish/,/$/p' my.txt

 

5.Other knowledge points
1)Pattern Space

-n parameter


2)Address

#relative position, +3
sed '/dog/,+3s/^/# /g' pets.txt

 

3)Command Package
sed '3,6 {/This/d}' pets.txt
sed '3,6 {/This/{/fish/d}' pets.txt
sed '1,$ {/This/d; s/^ *//g' pets.txt

 

4)Hold Space
g|G : rewrite|append content from hold space to pattern spac.
h|H : rewrite|append content from pattern space to hold space
x   : swap content between pattern space and hold space

 

$ cat t.txt
one
two
three

 $sed 'H;g' t.txt



 
$sed '1!G;h;$!d' t.txt


 
Refers:
http://coolshell.cn/articles/9104.html

  • 大小: 111.6 KB
  • 大小: 97.6 KB
分享到:
评论

相关推荐

    Sed Tutorial

    ### Sed 教程:添加、插入、替换及计算文件行数 #### 概述 `sed` 是一个强大的 Unix/Linux 下的流编辑器,能够处理文本文件中的模式匹配与替换等操作。本教程将深入介绍如何使用 `sed` 来执行如添加、插入、替换...

    Sed - An Introduction and Tutorial by Bruce Barnett

    标题与描述:“Sed - An Introduction and Tutorial by Bruce Barnett” Sed,即Stream Editor(流编辑器),是一种功能强大的文本处理工具,广泛应用于Unix和类Unix系统中。它能够读取输入流,对其进行一系列预...

    sed_fitting_tutorial:有关如何设置非常基本的星系SED拟合例程的教程

    SED安装教程 该存储库包含一系列iPython笔记本,它们将教您如何执行非常基本的SED拟合。 假设您已熟悉基本概念(例如,已阅读第2部分),现在想开始在Python中实现这些概念。 我编写该教程是希望对希望开始编写自己...

    sed-awk-2nd-edition.chm

    The book begins with an overview and a tutorial that demonstrate a progression in functionality from grep to sed to awk. sed and awk share a similar command-line syntax, accepting user instructions in...

    A Basic UNIX Tutorial

    - **高级命令**:grep、awk、sed等用于文本处理和数据过滤。 #### 五、文件和目录管理 - **创建文件和目录**:使用touch、mkdir等命令。 - **文件操作**:移动、复制、删除文件使用mv、cp、rm等命令。 - **查看...

    linux shell programming tutorial

    - **文本处理**:`grep`(搜索字符串)、`sed`(流编辑器)、`awk`(强大的文本处理工具)等。 - **系统管理**:`ps`(显示进程状态)、`kill`(终止进程)、`top`(显示系统负载和进程状态)等。 #### 进程管理 - ...

    LINUX Rute User’s Tutorial and Exposition

    - **第8章:流编辑器sed**:sed是一种强大的文本流编辑器,可以用来过滤和转换文本输入,广泛应用于文本处理领域。 ### 七、进程管理 - **第9章:进程与环境变量**:这一章节讲解了如何管理和监控Linux系统中的...

    Unix Tutorial

    【Unix教程】是针对计算机操作系统领域的一门重要课程,...记得在学习过程中,亲自动手实践,结合README.md中的指引和Unix Tutorial - TsingHua.rar中的资料,将理论知识转化为实际技能。祝你在Unix的世界里探索愉快!

    good in UNIX

    2. **Sed - An Introduction and Tutorial.mht, Sed - An Introduction and Tutorial.pdf**:Sed(流编辑器)是UNIX/Linux系统中的一个强大工具,用于对文本流进行操作,如替换、删除、打印等。这些文件提供了一个...

    shell-tutorial:Shell入门教程(Shell教程书)

    Shell教程书,主要针对初学者,旨在帮助读者掌握Unix/Linux操作系统中的Shell脚本编写技能。Shell是一种命令行解释器...在阅读“shell-tutorial”这个教程时,结合实际操作,将有助于更好地理解和掌握Shell脚本的精髓。

    LINUX:Rute用户的教程和博览会(Paul Sheer)LINUX: Rute User's Tutorial and Exposition (Paul Sheer)

    《Linux:Rute用户的教程和博览会》(LINUX: Rute User's Tutorial and Exposition)是Paul Sheer编著的一本经典Linux教材,该书尝试教会读者如何以Linux的思维方式来理解这一操作系统。书中内容覆盖了从基础命令到...

Global site tag (gtag.js) - Google Analytics