zoukankan      html  css  js  c++  java
  • sed简单用法

    1.参数说明:

    <tr>
    	<td style="text-align: center;background-color: bisque">-n</td>
    	<td > 仅显示script处理后的结果</td>
    </tr>
    <tr>
    	<td style="text-align: center;background-color: bisque">-V或--version</td>
    	<td>显示版本信息<br>centOS:sed --version<br>macOS不支持</td>
    </tr>
    <tr>
    	<td style="text-align: center;background-color: cadetblue">a</td>
    	<td >新增,后面跟字符串,插入在指定行的下一行<br><font color="green">sed '4a newLine' text.txt</font></td>
    </tr>
    <tr>
    	<td style="text-align: center;background-color: cadetblue">c</td>
    	<td>取代,后面跟字符串,可以取代n1,n2之间的行<br><font color="green">sed '2,5c NO 2-5 line' text.txt</font></td>
    </tr>
    <tr>
    	<td style="text-align: center;background-color: cadetblue">d</td>
    	<td >删除<br><font color="green">sed '1'd text.txt    #删除第一行</font></td>
    </tr>
    <tr>
    	<td style="text-align: center;background-color: cadetblue">i</td>
    	<td> 插入,后面跟字符串,插入在指定行的上一行<br><font color="green">sed '2i hello' text.txt</font></td>
    </tr>
    <tr>
    	<td style="text-align: center;background-color: cadetblue">p</td>
    	<td width="400"> 打印<br><font color="green">sed -n '2,4'p text.txt</font></td>
    </tr>
    <tr>
    	<td style="text-align: center;background-color: cadetblue">s </td>
    	<td width="400">替换<br><font color="green">sed -ig 's/456/hello/g' text2.txt</font></td>
    </tr>
    
    -e 以指定的script来处理输入的文本文件,用于实现多个行为
    -f 以指定的script文件来处理输入的文本文件
    -h或--help 显示帮助
    centOS:sed --help
    macOS不支持
    # 2. 示例 测试文本text.txt: ```#txt rot:x:0:0:/rot:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin operator:x:11:0:operator:/rooot:/sbin/nologin roooot:x:0:0:/rooooot:/bin/bash 1111111111111111111111111111111 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ``` ## 2.1 打印某行 ```#shell # sed -n 'n'p filename 其中n为数字 sed -n '2'p text.txt #只打印第2行 sed '2'p text.txt #打印全部内容,其中第2行打印2遍 ``` ![](https://img2018.cnblogs.com/blog/1418970/201912/1418970-20191204224524576-1129555268.png)

    2.2 打印多行

    # sed -n 'n1,n2'p filename n1,n2为数字时,n1<n2
    sed -n '2,4'p text.txt
    sed -n '1,$'p text.txt
    

    2.3 打印包含某个字符串的行

    注意:包含字符串,必须用//将字符串包含,否则提示无效命令

    # 打印包含root字符串的行
    sed -n '/root/'p text.txt
    # 使用正则表达式 特殊字符^ $ . *也能在sed中使用
    sed -n '/^1/'p text.txt     #打印以1开头的行
    sed -n '/in$/'p text.txt    #打印以in结尾的行
    sed -n '/r..o/'p text.txt     #打印r、o之间包含2个字符的行
    sed -n '/ooo*/'p text.txt    #打印至少包含2个o的行
    

    2.4 打印指定字符串所在行之间的内容

    sed -n '/operator/,/bash/p' text.txt
    

    2.5 打印替换后的内容

    sed -n 's/operator/echo/p' text.txt 
    

    2.6 -e 实现多个行为

    sed -e '1'p -e '/111/'p -n text.txt    #打印第一行和包含111的行
    

    2.7 d 删除某行或多行

    不仅可以删除指定的单行以及多行,还可以删除匹配某个字符的行,另外还可以删除从某个行直到文档结束

    sed '1'd text.txt    #删除第一行
    sed '1,3'd text.txt    #删除第一行到第三行
    sed '2,$'d text.txt    #删除第二行到最后
    sed '/oot/' text.txt    #删除包含oot的行
    

    2.8 替换字符串或字符

    • s:替换   
    • g:全局替换,不加只替换每行的第一个
    • 分隔符:/,还可以使用其他的特殊字符如# @
    sed '2,4s/ot/to/g' text.txt    # 将第2行到第4行的ot替换为to
    sed 's#ot#to#g' text.txt     #
    sed 's/[0-9]//g' text.txt    #删除所有的数字
    sed 's/[a-zA-Z]//g' text.txt    #删除所有的字母
    sed 's/[0-9a-zA-Z]//g' text.txt    #删除所有的数字和字母
    

    2.9 调换2个字符的位置

    sed 's/(rot)(.*)(bash)/321/' text.txt    #将bash和rot调换
    

    2.10 增加字符串

    sed 's/^.*$/123&/' text.txt    #在每一行的前面加上123
    sed 's/^.*$/&123/' text.txt     #在每一行的后面加上123
    

    2.11 直接修改文件的内容

    由于这个命令可以直接把文件修改,修改前最好先备份,避免出错。

    sed -i 's/:/#/g' text.txt    #linux
    #mac强制要求备份,否则报错,以下为Mac
    sed -i 'bak' 's/:/#/g' text.txt    #备份
    sed -ig 's/456/hello/g' text2.txt    # -ig
    sed -i ''  's/hello/456/g' text2.txt     #指定备份为空
    

    mac下直接替换一直报错,解决方法参考:
    http://blog.sina.com.cn/s/blog_5fde60890101ic7r.html
    https://www.cnblogs.com/meitian/p/5907562.html
    使用 i 插入行

    #在第2行前插入1行
    sed '2i hello' text.txt
    #将2-5行的内容替换为NO 2-5 line
    sed '2,5c NO 2-5 line' text.txt
    数据的搜寻并执行命令
    sed -n '/roo*/{s/bash/blueshell/;p;q}' text.txt
    

    2.12 保存到一个文件

    sed 's/456/hello/g' text2.txt > text3.txt 
    

    2.13 打印指定字符串所在行之间的内容

    sed -n '/operator/,/bash/p' text.txt
    

    2.13 添加行

    #第4行后添加一行
    sed -e 4a
    ewLine text.txt
    sed '4a newLine' text.txt
    #最后一行添加
    sed '$a this is test' text.tx
    #添加2行,注意命令行中换行
    sed -e '2a hello 
    > world ' text.txt
    


  • 相关阅读:
    POJ2635-The Embarrassed Cryptographer-大整数素因子
    poj2115-C Looooops -线性同余方程
    POJ1942-Paths On a Grid-组合数学
    poj1850-CODE-组合
    POJ1019-Number Sequence-数数。。
    CF-Contest339-614
    POJ3252-RoundNumbers-排列组合
    睡前小dp-poj3254-状压dp入门
    AC自动机-HDU3065-简单题
    python学习笔记 day32 实现网盘上传下载功能
  • 原文地址:https://www.cnblogs.com/csj2018/p/11985596.html
Copyright © 2011-2022 走看看