六、sed

sed的工作模式

sed是一个流编辑器,比如修改删除等都是编辑。


sed流编辑器

sed的语法格式,pattern是对符合pattern的行过滤,然后将这些行交给comman进行处理。假如没有pattern就是对每一行会进行command处理

sed选项

sed命令选项

sed打印

sed -n

pattern

-e

假如这个/pattern/command非常的复杂,可以将其写在一个*.sed文件中,然后用-f指定该文件

-r扩展正则表达式

‘/s//g’逐行替换

替换

sed中的pattern

pattern用发表

sed打印

sed pattern2

sed中的编辑命令详解

编辑命令对照1

编辑命令2
  • sed -i '1d' passwd
  • sed -i '1,3d' passwd #删除第一行-第三行
  • sed -i '/root/,/adm/d' passwd #删除root开头,到adm开头的所有行
  • sed -i '//bin/bash/a HELLO WORLD' passwd #行后追加,a然后空格加要加的句子
  • sed -i '/like/r passwd' py.txt #将passwd的内容追加到符合pattern的行后


    修改文件

    =号及i

反向引用

反向引用

有一个文件,需要把符合Pattern:had..p的字符串其后都加一个s

实例
  • sed -i 's/had..p/&s/ig' str.txt # 忽略大小写


    \1正则匹配

使用注意点

变量替换

sed中使用变量

利用sed查询指定内容

sed配合grep
#!/bin/bash
#

FILE_NAME=/root/lesson/5.6/my.cnf

function get_all_segments
{
    echo "`sed -n '/\[.*\]/p' $FILE_NAME  | sed -e 's/\[//g' -e 's/\]//g'`"
}

function count_items_in_segment
{
    items=`sed -n '/\['$1'\]/,/\[.*\]/p' $FILE_NAME | grep -v "^#" | grep -v "^$" | grep -v "\[.*\]"`
    
    index=0
    for item in $items
    do
        index=`expr $index + 1`
    done

    echo $index

}

number=0

for segment in `get_all_segments`
do
    number=`expr $number + 1`
    items_count=`count_items_in_segment $segment`
    echo "$number: $segment  $items_count"
done

利用sed删除特定内容

删除

删除

删除3

删除空行

非#开头的加*

利用sed修改文件内容

修改文件内容

修改文件内容

利用sed追加文件内容

追加内容

实例1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等。如果我们相对这些文件进行一些...
    以七v为书阅读 5,404评论 0 5
  • 本文承接之前写的三十分钟学会AWK一文,在学习完AWK之后,趁热打铁又学习了一下SED,不得不说这两个工具真的堪称...
    mylxsw阅读 9,829评论 3 74
  • grep擅长查找,awk擅长分析(select),sed擅长批量编辑行 概述 SED的英文全称是 Stream E...
    piziyang12138阅读 4,413评论 0 3
  • Day 15 作者:翟玉龙 归档:课堂笔记 2019/3/20 快捷键: Ctrl + 1 标题1 Ctrl + ...
    Linux_淡忘阅读 2,271评论 0 0
  • 2.田柾国ver. 我和闵玧其分手了。 好想知道他在想些什么,他为什么什么都不说呢。我想知道他爱不爱我,离不离得开...
    光咕的小卷毛阅读 3,933评论 0 0