zoukankan      html  css  js  c++  java
  • sed使用小结

    1 语法

    https://www.runoob.com/linux/linux-comm-sed.html

    Linux sed 命令是利用脚本来处理文本文件。

    sed 可依照脚本的指令来处理、编辑文本文件。

    Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

    1. 1 语法

    sed [-hnV][-e<script>][-f<script文件>][文本文件]
    

    参数说明:

    • -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。

    • -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。

    • -h或--help 显示帮助。

    • -n或--quiet或--silent 仅显示script处理后的结果。

    • -V或--version 显示版本信息。

    动作说明:

    • a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行);

    • c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行;

    • d :删除, 因为是删除啊,所以 d 后面通常不接任何咚咚;

    • i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);

    • p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行;

    • s :取代,可以直接进行取代的工作。通常这个 s 的动作可以搭配正规表示法,例:1,20s/old/new/g;

    1.2 语法案例

    • 以行为单位的新增/删除

    首先查看testfile中的内容如下:

    $ cat testfile #查看testfile 中的内容  
    HELLO LINUX!  
    Linux is a free unix-type opterating system.  
    This is a linux testfile!  
    Linux test 
    
    $ sed -e 4a
    ewline testfile  # 使用sed 在第四行后添加新字符串  
    HELLO LINUX!                    # testfile文件原有的内容  
    Linux is a free unix-type opterating system.  
    This is a linux testfile!  
    Linux test  
    newline 
    
    • 将 /etc/passwd 的内容列出并且列印行号,同时,请将第 2~5 行删除!

    2 常用案例

    2.1 按字符串分割文件 sed awk

    https://blog.csdn.net/Answer3664/article/details/118959029
    文件内容:

    Please rise , then , for this minute ' s silence . ||| Please rise , then , for this minute , silence . ||| 0 1 2 3 4 5 6 7 -1 10 11
    ( The House rose and observed a minute ' s silence ) ||| ( he listened and observed a minute ' s silence ) ||| 0 -1 -1 4 5 6 7 8 9 10 11
    Madam President , on a point of order . ||| Madam President , on points of order . ||| 0 1 2 3 -1 6 7 8
    

    每行有3列,用 “ ||| ” 分隔,现在想抽取其中的每一列
    可以先把 “ ||| ”替换成换行符,然后隔固定行抽取:

    sed "s/ ||| /
    /g" file.txt | awk '{if (NR%3 == 1)  print $0; }' 
    sed "s/ ||| /
    /g" file.txt | awk '{if (NR%3 == 2)  print $0; }'
    sed "s/ ||| /
    /g" file.txt | awk '{if (NR%3 == 0)  print $0; }'
    
  • 相关阅读:
    jQuery笔记(1)
    [bzoj 1878][SDOI2009]HH的项链
    [bzoj 1968][Ahoi2005]COMMON 约数研究
    [bzoj 1899][ZJOI2004]lunch 午餐
    [bzoj 1090][SCOI2003]字符串折叠
    CodeForces 1029E div3
    [bzoj 1270][BeijingWc2008]雷涛的小猫
    [bzoj 1260][CQOI 2007]涂色paint
    [AtCoder ARC101D/ABC107D] Median of Medians
    [luogu 1070]道路游戏(NOIP2009T4)
  • 原文地址:https://www.cnblogs.com/douzujun/p/15392104.html
Copyright © 2011-2022 走看看