sed工具使用

简介: 一. sed介绍1. sed是一个很好的文本处理工具,本身也是一个管道命令。sed可以接收标准输入,主要是以行为单位,能够对数据进行替换,删除,新增,选取特定行等功能。


一. sed介绍

1. sed是一个很好的文本处理工具,本身也是一个管道命令。sed可以接收标准输入,主要是以行为单位,能够对数据进行替换,删除,新增,选取特定行等功能。


2. sed命令的格式

    sed [-nefr] 'commond' file

    -n:使用安静模式。在一般的sed命令中,所有来自stdin的数据一般都会被列出到屏幕上,但如果加上-n参数后,则只有经过sed特殊处理的那一行才会被列出来。

    -e:直接在命令行模式上进行sed的动作编辑

    -f: 直接将sed的动作写到一个文件中,-f filename则可以执行filename内的sed动作

    -r: sed的动作支持的是扩展正则表达式的语法

    -i: 直接修改读取的文件内容,而不是由屏幕输出(比较重要,一般都是直接修改原文件要加上-i参数)


3. sed常用命令

    a: 新增,a后面接字符串,新增字符串在目前的下一行

    c: 替换,c后面接字符串,把指定行的内容替换为字符串

    d: 删除,因为是删除则d后面通常不接任何的参数

     i: 插入, i后面接字符串,把字符串插入到当前的上一行

    p: 打印,也就是将指定的行打印出来,一般和sed -n一起出现

    s: 替换,可以直接进行替换工作。通常这个s的工作和正则表达式一起出现


二. sed使用举例

    假设有个文件为in.txt,如果是想直接输出到屏幕则不加-i,如果要修改文件则加上-i参数。以下例子默认不加-i参赛

    【a 增加】

    1. 在第一行后面插入字符串this is two line

        sed '1a this is two line' in.txt

    2. 在第二行后面插入字符串this is three line 

        sed '2a this is three line' in.txt

    3. 在最后一行插入字符串this is lase line

        sed '$a this is three line' in.txt


    【c 替换】

    1. 把第一行替换为 first

        sed '1c first' in.txt

    2. 把第3行到最后一行替换为end

        sed '3,$c end' in.txt

    

    【d 删除】

    1. 把第2行删除

        sed '2d' in.txt

    2. 删除第2行到第5行

        sed '2,5d' in.txt

    3. 删除in.txt中所有的包含test的行

        sed '/test/' d in.txt

    4. 删除没有"test"的行

        sed -i '/test/!d' in.txt

 

    【i 插入】

    1. 在第一行前面插入begin

        sed '1i begin' in.txt

   

    【p 打印】

    1. 可以使用cat,head等来打印,但是sed也可以用来打印

    2. 打印in.txt第5行到第7行

        sed -n '5,7p' in.txt   //-n表示安静模式,只有选择的几行才会被输出

    3. 打印第2行到最后一行

        sed -n '2,$p' in.txt

 

    【s 替换】

     1. sed 's/要替换的字符串/新的字符串/g' in.txt

     2. sed 's/hehe//g' in.txt  //作用是把所有的hehe单词删除

     3. sed 's/chenguolin/doubi/g‘ in.txt  //作用是把所有chenguolin单词替换为doubi

     4. echo "hehe s sdhe chenguolin:192.168" | sed 's/^.*lin://g'   //作用是在字符串开头把hehe s sdhe chenguolin:删除

     5. 注意正则表达式和通配符的不同。

         *在正则表达式中表示重复0个到无穷多个前一个字符,es*,可以表示es,ess,esss,essss

         *在通配符中表示任意个字符*.txt,可以表示.txt,a.txt,b.txt等      


三. 高级应用

     1. 把某个目录下所有名为TMP 替换为tmp。

         例如,要把当前目录下所有出现的TMP替换为tmp

         sed -i 's/TMP/tmp/g' `grep "TMP" -rl .`

         -r  -- 搜索子目录

         -l   -- 输出匹配的文件名

     2.          

 




相关文章
|
10月前
|
Linux命令(105)之readlink
Linux命令(105)之readlink
117 1
Linux命令sprof详解
**`sprof`是Linux下的共享库性能分析工具,补充`gprof`,专注分析`.profile`文件以识别性能瓶颈。通过调用次数、执行时间数据优化资源和代码。使用参数如`-F`、`-I`、`-d`进行定制化分析。示例:先设置`LD_PROFILE`环境变量,运行程序生成`.profile`,然后用`sprof`分析。注意需用`-g`编译程序,并在代表性的负载下分析。结合其他工具如`perf`、`valgrind`提升分析效果。**
Linux命令slabtop详解
`slabtop`是Linux内存监控工具,展示内核slab缓存的实时状态。它读取`/proc/slabinfo`,显示缓存名、对象数、大小和使用详情。特点包括实时显示、可排序和多选项定制。常用参数有`-d`设置更新间隔,`-s`按特定标准排序。适用于多种Linux发行版,用于识别性能瓶颈和优化内存使用。结合其他工具使用,提升系统性能。
深入了解Linux命令:bzdiff
`bzdiff`是Linux下用于比较两个`bzip2`压缩文件的命令,生成的差异文件(补丁)可由`bpatch`更新文件。它适用于软件维护和版本控制。命令格式为`bzdiff [options] file1.bz2 file2.bz2 [output_file]`。常用选项包括`-h`、`-V`和`--verbose`。通过示例展示了如何比较文件、保存差异及应用补丁。`bzdiff`和`bpatch`在开发、维护和版本控制中发挥着重要作用。
深入了解Linux命令:bzcat
`bzcat`是Linux下用于查看不解压的`.bz2`压缩文件内容的工具,类似于`zcat`。它的基本语法是`bzcat [选项] 文件名`,常用选项包括`-h`和`-V`。工作原理是通过管道从`bzip2`获取解压数据并输出到标准输出。示例用法包括直接查看压缩文件内容、重定向到新文件及与其他命令如`grep`结合使用。掌握`bzcat`能提高处理压缩数据的效率。
常用Linux命令 - 帮助命令
常用Linux命令 - 帮助命令
56 0
|
10月前
|
了解Linux命令特点
了解Linux命令特点。
104 0
Kubectl 好用的命令行工具:oh-my-zsh 技巧和窍门
Kubectl 好用的命令行工具:oh-my-zsh 技巧和窍门
336 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等