zoukankan      html  css  js  c++  java
  • awk-sed

    sed

    # 先读取资料、存入模式空间、对其进行编辑、再输出、再用下一行替换模式空间内容

    -n  #不再显示模式空间中的内容(默认显示)

    -i  #直接对文本编辑

    -r  #正则可不转换特殊字符

    --follow-symlinks  #修改软链接文件时 

    匹配字符出现的次数

    *  #任意多个字符

    ?  #0或者1个 最小匹配,没有加-r参数需要转义 ?

    $  #最后一行

    ^  #开头行

    .*  #匹配任意多个字符

    .  #任意单个字符

    ^$  #空行

    ?  #0或者1次

    +  #至少出现1次

    {3}  #精确出现3次

    {2,5}  #出现2-5次

      #转义符号

    command

    d

    删除符合条件的行
    #sed '1,2d' a.txt
    删除文件中包含oot的行
    #sed '/oot/d' a.txt
    删除第一行及其后两行
    #sed '1,+2d' a.txt
    删除第一行
    #sed '1d' a.txt
    

     p

    显示符合条件的行
    显示以/开头的行
    #sed -n '/^//p' a.txt
    

     a string

    在符合条件的行后面追加新行。string为追加的内容
    在以/开头的行后面追加新行,#hello world
    sed '/^//a #hello world' a.txt
    在以/开头的行后面追加两行内容,分别为# hello worl  # hello linux 
    # sed '/^//a # hello world
    # hello linux' a.txt 
    

    i string

    在符合条件的行前添加新行,string为追加的内容
    在文件第1行添加# hello world 
    # sed '1i # hello world' a.txt

    c string 

    替换指定行的内容
    将文件中最后一行内容替换为End Of File
    # sed '$c End Of File' /1.txt 
       
    # sed '7c SELINUX=disabled' /etc/sysconfig/selinux

    =

    用于显示每一行的行号
    显示/etc/passwd文件最后一行的行号
    # sed -n '$=' /etc/passwd
    49

    s/regex/string/[修饰符] 查找并替换 默认情况下,只替换每一行第1次出现的字符
    修饰符:
    g:替换每一行所

    i:忽略大小写

    [root@localhost ~]# sed 's/^#/?/' /etc/fstab 
    查找文件中的UUID,并替换为uuid
    # sed 's/UUID/uuid/' /etc/fstab    
    将行首的/替换成#
    # sed 's/^//#/' /etc/fstab    
    [root@localhost ~]# sed 's|/|#|g' /etc/fstab 
    将每一行出现的所有/替换为@
    # sed 's///@/g' /etc/fstab 
    
    删除行首的空格
    [root@shellscript ~]# sed 's|^#||' /etc/fstab 
    
    [root@shellscript ~]# history | sed 's|^[[:space:]]+||'
    
    page2image40381408

    awk

    1、awk内置变量之记录变量

    FS:  指定读取文件时的分隔符,默认空白字符,相当于-F

    OFS:  指定输出的分隔符,默认空白字符

    [root@localhost ~]# head -n 1 /etc/passwd | awk -F: '{print $1,$7}'
    root /bin/bash
    [root@localhost ~]#
    [root@localhost ~]# head -n 1 /etc/passwd | awk 'BEGIN{FS=":"}{print $1,$7}'
    root /bin/bash

    [root@localhost ~]# head -n 1 /etc/passwd | awk -F: '{print $1,$7}'
    root /bin/bash
    [root@localhost ~]# head -n 1 /etc/passwd | awk -F: 'BEGIN{OFS="---"}{print $1,$7}'
    root---/bin/bash

    2、awk内置变量之数据变量

    NR:记录awk所处理的文本的行数,如果有多个文件,所有文件统一进行计数

    [root@localhost ~]# awk '{print "第",NR,"行内容:",$0}' /etc/hosts /etc/issue
    第 1 行内容: 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    第 2 行内容: ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    第 3 行内容: CentOS release 6.6 (Final)
    第 4 行内容: Kernel on an m
    第 5 行内容:

    注意:

    print在显示变量值时,不需要使用$

    FNR:记录awk正在处理的文件的行数,如果有多个文件,每个文件分别进行计数

    [root@localhost ~]# awk '{print "第",FNR,"行内容:",$0}' /etc/hosts /etc/issue
    第 1 行内容: 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    第 2 行内容: ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    第 1 行内容: CentOS release 6.6 (Final)
    第 2 行内容: Kernel on an m
    第 3 行内容:

    NF:记录awk正在处理的当前行被分隔成了几个字段
    # cat test.txt
    this is a test.
    # awk '{print NF}' test.txt
    4
    # awk '{print $NF}' test.txt
    test.

    [root@localhost ~]# awk -F: '{print "Number of line: ", NF}' /etc/passwd

    [root@shell ~]# awk -F. '{print "Number of Line: ", NF}' /etc/hosts
    [root@shell ~]# awk 'BEGIN{FS="."}{print "Number of Line: ", NF}' /etc/hosts
    Number of Line: 6
    Number of Line: 3
    Number of Line: 6

  • 相关阅读:
    块级标签与预格式化文本标签----------大多数XHTML可以表示为两种类型的标签:块标签(block tag)和内联标签(inline tag)
    下拉框与下拉框之间的联动效果
    下拉框与文本框之间的转换
    设置密码是否为可见
    html表单
    HTML基础2——综合案例3——创建考试报名表格
    HTML基础2——综合案例2——复杂的嵌套列表
    java配置、IntelliJ IDEA Ultimate激活、
    字节流转字符流OutputStreamWriter、InputStreamReader,关闭流的方法
    文件字节流、字符流、缓冲字节流、缓冲字符流、数据流
  • 原文地址:https://www.cnblogs.com/charon2/p/10367005.html
Copyright © 2011-2022 走看看