zoukankan      html  css  js  c++  java
  • Linux5.6 正则练习

    1.  把test.txt 中出现第一组数字移动到行末尾

    [root@chyuanliuNJ awk]# sed -nr '24,28s#([^0-9][^0-9]*)([0-9][0-9]*)([^0-9].*$)#132#'p text.txt
    operator:x::0:operator:/root:/sbin/nologin11
    games:x::100:games:/usr/games:/sbin/nologin12
    games:x::100:games:/usr/games:/sbin/nologin12
    ftp:x::50:FTP User:/var/ftp:/sbin/nologin14
    ftp:x::50:FTP User:/var/ftp:/sbin/nologin14
    

     2.  把test.txt中出现的第一个数字和最后一个单词替换位置

    [root@chyuanliuNJ awk]# sed -nr '7,11s#([^0-9][^0-9]*)([0-9][0-9]*)([^0-9].*)([^a-zA-Z])([a-zA-Z][a-zA-Z]*$)#15342#'p text.txt
    bin:x:nologin:1:bin:/bin:/sbin/1
    bin:x:nologin:1:bin:/bin:/sbin/1
    daemon:x:nologin:2:daemon:/sbin:/sbin/2
    daemon:x:nologin:2:daemon:/sbin:/sbin/2
    adm:x:nologin:4:adm:/var/adm:/sbin/3
    [root@chyuanliuNJ awk]# sed -n '7,11'p text.txt
    bin:x:1:1:bin:/bin:/sbin/nologin
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    

     3.  每个单词的第一个小写字母变大写;所有小写变大写;所以大写变小写

    [root@chyuanliuNJ awk]# sed -nr '26,28s/[a-z]/u&/g'p text.txt
    Games:X:12:100:Games:/Usr/Games:/Sbin/Nologin
    Ftp:X:14:50:FTP User:/Var/Ftp:/Sbin/Nologin
    Ftp:X:14:50:FTP User:/Var/Ftp:/Sbin/Nologin
    [root@chyuanliuNJ awk]# sed -n '26,28s/[a-z]/u&/g'p text.txt
    GAMES:X:12:100:GAMES:/USR/GAMES:/SBIN/NOLOGIN
    FTP:X:14:50:FTP USER:/VAR/FTP:/SBIN/NOLOGIN
    FTP:X:14:50:FTP USER:/VAR/FTP:/SBIN/NOLOGIN
    [root@chyuanliuNJ awk]# sed -n '3,4s/[A-Z]/l&/g'p text.txt
    root:x:10
    root:x:10
    

     4.  awk 中使用外部shell变量

    5.  awk 合并一个文件

    #我有这样的需求,需要把两个文件中,第一列相同的行合并到同一行中。举个例子,有两个文件,内容如下
    cat 1.txt
    1 aa
    2 bb
    3 ee
    4 ss
    
    cat 2.txt
    1 ab
    2 cd
    3 ad
    4 bd
    5 de
    
    合并后的结果为:
    
    1 ab aa
    2 cd bb
    3 ad ee
    4 bd ss
    5 de
    
    [root@chyuanliuNJ awk]# awk '{if(NR==FNR){a[$1]=$2}};{if(NR>FNR){print $0,a[$1]}}'  1.txt  2.txt
    1 ab aa
    2 cd bb
    3 ad ee
    4 bd ss
    5 de
    

     6.  awk中gsub函数的使用

    #text.txt文件中把所有www替换为abc
    [root@chyuanliuNJ awk]# awk 'gsub(/www/,"abc")' text.txt
    abc:x:1002:1002::/home/abc:/bin/bash
    abc:x:1002:1002::/home/abc:/bin/bash
    
    #替换$1中的www为abc
    [root@chyuanliuNJ awk]# awk -F ':' '{OFS=":"} gsub(/www/,"abc",$1) {print $0}' text.txt
    abc:x:1002:1002::/home/www:/bin/bash
    abc:x:1002:1002::/home/www:/bin/bash
    

     7.  awk用print打印单引号

    awk '{print "This is a '"'"'"$1} filename 
    #在awk中使用脱义字符是起不到作用的,如果想打印特殊字符,只能使用'""' 这样的组合才可以。这里自左至右为单引号 双引号 双引号 单引号其中两个单引号为一对,两个双引号为一对。想脱义$那就是'"$"' 脱义单引号那就是 '"'"' 
    
    [root@chyuanliuNJ awk]# awk -F ':' 'NR<=5 {print "'"$"'"$1}' text.txt
    $root
    $root
    $ROOT
    $ROOT
    $Chy
    

    8.  合并两个文件

    #paste  filename1  filename2
    
    [root@chyuanliuNJ awk]# cat 1.txt
    1 aa
    2 bb
    3 ee
    4 ss
    [root@chyuanliuNJ awk]# cat 2.txt
    1 ab
    2 cd
    3 ad
    4 bd
    5 de
    [root@chyuanliuNJ awk]# paste 1.txt 2.txt
    1 aa    1 ab
    2 bb    2 cd
    3 ee    3 ad
    4 ss    4 bd
              5 de
    #如果想在两个文件连接处用一个指定的字符连接,还可以用-d来指定
    [root@chyuanliuNJ awk]# paste -d '++' 1.txt 2.txt
    1 aa+1 ab
    2 bb+2 cd
    3 ee+3 ad
    4 ss+4 bd
    +5 de
    

    9.  awk其他用法http://www.cnblogs.com/emanlee/p/3327576.html

    http://ask.apelearn.com/question/213 sed删除某关键字的下一行到最后一行

    http://ask.apelearn.com/question/199  awk 中使用外部shell变量

    http://ask.apelearn.com/question/266  把一个文件多行连成一行

    http://ask.apelearn.com/question/224  截取多个域为一行

    http://ask.apelearn.com/question/5494  用awk生成以下结构文件

  • 相关阅读:
    系统维护相关问题
    Python环境维护
    哈希表解决字符串问题
    论文笔记二:《A Tutoral on Spectral Clustering》
    论文笔记之哈希学习比较--《Supervised Hashing with Kernels》《Towards Optimal Binary Code Learning via Ordinal Embedding》《Top Rank Supervised Binary Coding for Visual Search》
    Java中String、StringBuffer、StringBuilder的比较与源 代码分析
    浙大pat1040 Longest Symmetric String(25 分)
    浙大pat1039 Course List for Student(25 分)
    浙大pat---1036 Boys vs Girls (25)
    百炼oj-4151:电影节
  • 原文地址:https://www.cnblogs.com/chyuanliu/p/7891200.html
Copyright © 2011-2022 走看看