zoukankan      html  css  js  c++  java
  • Linux Shell Scripting Cookbook 读书笔记 5

    sed,awk

    1. sed (string editor)

    使用-i可以将结果运用于原文件

    sed 's/text1/text2/' file > newfile

    mv newfile file

    其实可以使用 sed -i 's/text1/text2/' file 搞定

    如果加后缀g表示全部替换,不加只会替换每行的第一处匹配

    使用Ng选择从第几处开始匹配,第二个例子是为了说明无论使用/或者|或者其他什么字符,都是可以用作定界符的

    移除空白行

    sed '/^$/d'  # /pattern/d或移除匹配到的行,注意没有s了

    用&表示匹配到的内容,并且d在sed命令中不支持。。

    第二个例子,用1 2分别标记之前括号里pettern匹配到的内容

    如果需要对sed中的内容求值,可以使用双引号

    2. awk

    awk通常由BEGIN,END和能够使用模式匹配的通用语句块三个部分组成,这三个部分都是可选的,脚本通常包含在双引号或者单引号中

    1)执行BEGIN

    2)读取stdin中的一行,然后执行pattern中的语句块,重复这个过程,直到文件读完;

        这个例子中没有提供pattern,则认为每一行都是匹配的

    3) 执行END

    awk中的print使用

    1. print的参数以逗号分隔时,打印出来的参数以空格作为定界符

    2. 双引号当做拼接操作符

    echo在这里的作用是输入一行,使得awk只执行一次

    特殊变量

    NR: 表示记录数量(number of rows),在执行中对应于当前行号

    NF: 表示字段数量(number of fields),在执行过程中对应于当前行的字段数

    $0: 表示执行过程中,当前行的内容

    $1: 第一个字段的文本内容

    $2: 第二个字段的文本内容

    -v选项将外部变量(非来自stdin)传递给awk

    从文件传输变量

    getline读取某一行

    例如跳过第一行

    指定样式

    设置定界符

    或者awk -F: '{print $NF}' /etc/passwd

    通过getline读取外部命令输出到变量output

    "command" | getline output

  • 相关阅读:
    JUnit入门
    Spring+Ibatis集成开发实例
    如花搞笑图片集锦(转贴)
    Jmeter接口測试
    java 解析国密SM2算法证书
    [BZOJ2324][ZJOI2011][最小费用最大流]营救皮卡丘
    定制ToolChain for ARM
    几种更新(Update语句)查询的方法
    linux杂谈(十七):iscsi存储分离技术
    17点50分系列-如何能让你的技术掌握的更深入?
  • 原文地址:https://www.cnblogs.com/ryansunyu/p/9240760.html
Copyright © 2011-2022 走看看