精华内容
下载资源
问答
  • sed正则用法收集

    2017-06-05 21:18:11
    sed -n 's#.\{7\}$#!#p' ooo   在文本的每一行前添加#符号 sed 's/^.\?/#&/' passwd & 替代符 替代前面所匹配的 ? 数量符 需要转义 表示1个或0个 / 分隔符 此处三个都是 ...

    1.将文本每行最后七个字符换成!号

    sed   -n  's#.\{7\}$#!#p' ooo

     

    在文本的每一行前添加#符号

    sed  's/^.\?/#&/' passwd

    &  替代符 替代前面所匹配的

    ?  数量符  需要转义 表示1个或0个

    /  分隔符 此处三个都是 可以用别的符号代替

     

    2.将某个目录下所有文件文本中的kkkkk 换成 ddddd

    sed -i 's/kkkkk/ddddd/g' `grep -rl  mydir`

    grep 中  -r递归  -l输出文件名

     

     3.截取文本中的某一段(IP地址)并存放与文件中

    (1)cat eth0 | sed 's/.*t addr://' | sed 's/ Bc.*//' |xargs echo > ech0

    (2)sed  -i  -e  's/.*t addr://'   -e  sed 's/B.*//'  eth0

     

     

    .*  表示任意字母任意数量

    -e  表示多点编辑

    -i   表示修改文件

     

    4.删除第6行到最后一行

    sed   '6,$d'  file

     

    5.删除第1行 和 第3行

    sed   -e  '1d'  -e '3d'  file

     

    6.再第3行上面插入两行

    sed '3a hello world \

    >the text' file             (>不是我打上去的是自动显示的)

     

    7.替换行

    sed '3c33333333'  file

    替换第三行

     

    8.对字符操作

    8-1删除某个字符

    sed  '/root/d'  file

    把file中的root删除

     

    8-2显示包含摸个字符的行

    sed -n '/root/n'  file

    把file中包含root的行显示出来

     

    8-3检索行并于此执行命令 命令间分好隔开

    sed -n  '/root/{s/bash/bullet;p;q}'  file

    file中含root的行上 把bash改成bullet并打印出来 最后退出

    s替换 p打印 q退出

     

     

    未完待续。。。

     

    展开全文
  • 其实这种区别只在Shell当中适用,因为用来在文件当中搜索字符串的命令,如grep、awk、sed等命令可以支持正则表达式,而在系统当中搜索文件的命令,如ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的...

    一、正则表达式

    1、正则表达式和通配符的区别(正则表达式用来在文件中匹配符合条件的字符串,通配符用来匹配符合条件的文件名)吗?其实这种区别只在Shell当中适用,因为用来在文件当中搜索字符串的命令,如grep、awk、sed等命令可以支持正则表达式,而在系统当中搜索文件的命令,如ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。

    2 基础正则表达式

    特殊:“^$”则会匹配空白行,

    3.扩展正则表达式

        熟悉正则表达式的童鞋应该很疑惑,在正则表达式中应该还可以支持一些元字符,比如“+”“ ? ”“|”“()”。其实Linux是支持这些  元字符的,只是grep命令默认不支持而已。如果要想支持这些元字符,必须使用egrep命令或grep -E选项,所以我们又把这些元字符称作扩展元字符。如果查询grep的帮助,对egrep的说明就是和grep -E选项一样的命令,所以我们可以把两个命令当做别名来对待。

    二、字符截取和替换命令

    注意:cut命令的默认分隔符是制表符,也就是“tab”键,不过对空格符可是不支持的。如果想要提取多列,只要列号直接用“,”分开。

    三.awk编程

    1,printf格式化输出

    2.awk的基本使用

    3.awk的条件

    4.   BEGIN是awk的保留字,是一种特殊的条件类型。BEGIN的执行时机是“在awk程序一开始时,尚未读取任何数据之前执行”。一旦BEGIN后的动作执行一次,当awk开始从文件中读入数据,BEGIN的条件就不再成立,所以BEGIN定义的动作只能被执行一次。

    5.  END也是awk保留字,不过刚好和BEGIN相反。END是在awk程序处理完所有数据,即将结束时执行。END后的动作只在程序结束时执行一次。

    6.注意:虽然awk是列提取命令,但是也要按行来读入的。如果有BEGIN条件,则先执行BEGIN定义的动作 ;如果没有BEGIN条件,则读入第一行,把第一行的数据依次赋予$0、$1、$2等变量。其中$0代表此行的整体数据,$1代表第一字段,$2代表第二字段。 依据条件类型判断动作是否执行。如果条件符合,则执行动作,否则读入下一行数据。如果没有条件,则每行都执行动作。要想让awk识别字符串,必须使用“//”包含。

    7.awk内置变量

    在awk编程中,因为命令语句非常长,在输入格式时需要注意以下内容:多个条件{动作}可以用空格分割,也可以用回车分割。在一个动作中,如果需要执行多个命令,需要用“;”分割,或用回车分割。在awk中,变量的赋值与调用都不需要加入“$”符。条件中判断两个值是否相同,请使用“==”,以便和变量赋值进行区分。

    8.awk函数的定义方法如下:function  函数名(参数列表){ 函数体} 

    四。sed命令

     概述:sed主要是用来将数据进行选取、替换、删除、新增的命令。sed所做的修改并不会直接改变文件的内容(如果是用管道符接收的命令的输出,这种情况连文件都没有),而是把修改结果只显示到屏幕上,除非使用“-i”选项才会直接修改文件。

    五。字符处理命令

     1、sort排序命令

    2. uniq

          uniq命令是用来取消重复行的命令,其实和“sort -u”选项是一样的。

      格式:      uniq [选项] 文件名选项: -i:忽略大小写

    3 .统计命令wc

        wc  [选项]  文件名

                选项: -l:只统计行数 -w:只统计单词数 -m:只统计字符数

    六.条件判断

     1,按照文件类型判断

    2.按照文件权限进行判断

    3.两个文件之间的比较

    4.两个整数之间的比较

    5.字符串的判断

    6.多重条件判断

    七.流程控制

    1 if条件判断

    1)、单分支if条件语句单分支条件语句最为简单,就是只有一个判断条件,如果符合条件则执行某个程序,否则什么事情都不做。

        语法如下:

               if  [   条件判断式   ];  then

                  程序

              fi

    单分支条件语句需要注意几个点:if语句使用fi结尾,和一般语言使用大括号结尾不同[ 条件判断式 ]就是使用test命令判断,所以中括号和条件判断式之间必须有空格then后面跟 符合条件之后执行的程序,可以放在[]之后,用“;”分割。也可以换行写入,就不需要“;”了,比如单分支if语句还可以这样写:

              if [ 条件判断式 ]

                then

                     程序

             fi

    2、双分支if条件语句

                     if [    条件判断式   ]

                        then

                            条件成立时,执行的程序

                        else

                            条件不成立时,执行的另一个程序

                           fi

    3、多分支if条件语句

    if [  条件判断式1  ]

        then

           当条件判断式1成立时,执行程序1

        elif [  条件判断式2  ]

        then

               当条件判断式2成立时,执行程序2

       elif[  条件判断3  ]

         then

              当条件判断式3成立时,执行程序3

    ...省略更多条件...

       else 

    当所有条件都不成立时,最后执行此程序

    fi

    4.多分支case条件语句

    case语句和if...elif...else语句一样都是多分支条件语句,不过和if多分支条件语句不同的是,case语句只能判断一种条件关系,而if语句可以判断多种条件关系。case语句语法如下:

     case $变量名 in

       "值1")

         如果变量的值等于值1,则执行程序1

            ;;

        "值2")

          如果变量的值等于值2,则执行程序2

         ::

          ...省略其他分支...

          *)

        如果变量的值都不是以上的值,则执行此程序

        ;;

      esac

    这个语句需要注意以下内容:case语句,会取出变量中的值,然后与语句体中的值逐一比较。如果数值符合,则执行对应的程序,如果数值不符,则依次比较下一个值。如果所有的值都不符合,则执行“*)”(“*”代表所有其他值)中的程序。

    case语句以“case”开头,以“esac”结尾。每一个分支程序之后要通过“;;”双分号结尾,代表该程序段结束(千万不要忘记,每次写case语句,都不要忘记双分号;;)。

    5.for循环

      for循环是固定循环,也就是在循环时已经知道需要进行几次的循环,有时也把for循环称为计数循环。for的语法有如下两种

    语法一:

         for 变量 in值1  值2  值3...

               do

                    程序

         done

    这种语法中for循环的次数,取决于in后面值的个数(空格分隔),有几个值就循环几次,并且每次循环都把值赋予变量。也就是说,假设in后面有三个值,for会循环三次,第一次循环会把值1赋予变量,第二次循环会把值2赋予变量,以此类推。

    语法二:

          for ((  初始值;循环控制条件;变量变化  ))

              do

                 程序

          done

    语法二中需要注意:初始值:在循环开始时,需要给某个变量赋予初始值,如i=1;循环控制条件:用于指定变量循环的次数,如i<=100,则只要i的值小于等于100,循环就会继续;变量变化:每次循环之后,变量该如何变化,如i=i+1。代表每次循环之后,变量i的值都加1。

    6,while循环

           while [  条件判断式  ]

              do

                  程序

             done

    对while循环来讲,只要条件判断式成立,循环就会一直继续,直到条件判断式不成立,循环才会停止。

    7.until循环

        until循环,和while循环相反,until循环时只要条件判断式不成立则进行循环,并执行循环程序。一旦循环条件成立,则终止循环。语法如下:

           until [  条件判断式  ]

                do

                   程序

            done

    8.函数

         function  函数名  ()  {

                    程序

       }

    8.特殊流程控制语句

       1、 exit语句

          系统是有exit命令的,用于退出当前用户的登录状态。可是在Shell脚本中,exit语句是用来退出当前脚本的。也就是说,在Shell脚本中,只要碰到了exit语句,后续的程序就不再执行,而直接退出脚本。exit的语法如下:

            exit [返回值]

     如果exit命令之后定义了返回值,那么这个脚本执行之后的返回值就是我们自己定义的返回值。可以通过查询$?这个变量,来查看返回值。如果exit之后没有定义返回值,脚本执行之后的返回值是执行exit语句之前,最后执行的一条命令的返回值。

      2.、 break语句

         当程序执行到break语句时,会结束整个当前循环。而continue语句也是结束循环的语句,不过continue语句单次当前循环,而下次循环会继续。画个示意图解释下break语句,如图

       

    3.continue语句

         continue也是结束流程控制的语句。如果在循环中,continue语句只会结束单次当前循环,也画个示意图来说明下continue语句,如图

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • sed正则截取字符串的一些坑

    千次阅读 2017-08-09 14:50:22
    有json字符串{"sysmana": 10, "influxdb": 9}现在要在shell脚本中匹配出sysmana对应的数字。 number=`echo $str | sed 's/.*sysmana\": *\([0-9]\+\).*/\1/'` 坑: 1、sed正则中的空格就用空格表示...3、sed正则中的1或

    有json字符串{"sysmana": 10, "influxdb": 9}现在要在shell脚本中匹配出sysmana对应的数字。

    number=`echo $str | sed 's/.*sysmana\": *\([0-9]\+\).*/\1/'`
    

    坑:

    1、sed正则中的空格就用空格表示,而不是\s,补充:可以用\\s

    2、sed正则中的数字只能用[0-9],而不能用\d表示

    3、sed正则中的1或者多个,只能用\+,而不能用+,区别就是加了转义字符

    4、sed正则中的()前要加转义字符,变成

    \(\)
    

    5、number=xxx这条赋值语句的等号两边不能有空格,如果赋值语句有空格,linux系统会认为number是一个命令

    展开全文
  • 最近写脚本,需要对脚本中函数传递的路径参数进行截取,发现了以下比较好用的方法,记录下: file=/dir1/dir2/dir3/my.file.txt 我们可以用${ }分别替换获得不同的值: ${file#*/}:拿掉第一条/及其左边的字串:...
  • sed 正则表达式

    2018-03-13 22:19:00
    打印某行 打印第二行 MacBook-Pro:develop qiuxuefei$ sed -n '2'p passwd # User Database 打印所有行 MacBook-Pro:develop qiuxuefei$ sed -n '1,$'p passwd ...
    • 打印某行

    打印第二行

    MacBook-Pro:develop qiuxuefei$ sed -n '2'p passwd 

    # User Database

    打印所有行

    MacBook-Pro:develop qiuxuefei$ sed -n '1,$'p passwd 

    ##

    # User Database

    # Note that this file is consulted directly only when the system is running

    备注:截图没有全部截取

    打印第一到第二行

    MacBook-Pro:develop qiuxuefei$ sed -n '1,2'p passwd 

    ##

    # User Database

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

    MacBook-Pro:develop qiuxuefei$ sed -n '/NetBIOS/'p passwd 

    _netbios:*:222:222:NetBIOS:/var/empty:/usr/bin/false

    • -e可以实现多个行为

    说明:满足两个任意条件的都展现,类似或

    MacBook-Pro:develop qiuxuefei$ sed -e '/NetBIOS/'p -e  '/captiveagent/'p  -n   passwd 

    _netbios:*:222:222:NetBIOS:/var/empty:/usr/bin/false

    _captiveagent:*:258:258:captiveagent:/var/empty:/usr/bin/false

    • 删除某行或者多行

    MacBook-Pro:develop qiuxuefei$ sed '1,3'd passwd 

    # Note that this file is consulted directly only when the system is running

    # in single-user mode.  At other times this information is provided by

    # Open Directory.

    MacBook-Pro:develop qiuxuefei$ more passwd 

    ##

    # User Database

    # Note that this file is consulted directly only when the system is running

    • 替换字符或字符串

    MacBook-Pro:develop qiuxuefei$ sed 's/Database/ssssssssss/g' passwd 

    ##

    # User ssssssssss

    # Note that this file is consulted directly only when the system is running

    # in single-user mode.  At other times this information is provided by

    # Open Directory.

         上例中的 ‘s’ 就是替换的命令, ‘g’ 为本行中全局替换,如果不加 ‘g’ 只换该行中出现的第一个。除了可以使用 ‘/’ 作为分隔符外,还可以使用其他特殊字符例如 ‘#’ 或者 ‘@’ 都没有问题。

    数字替换为空

    MacBook-Pro:develop qiuxuefei$ sed 's/[0-9]//g' passwd 

    # Open Directory.

    ##

    nobody:*:-:-:Unprivileged User:/var/empty:/usr/bin/false

    字母替换为空

    MacBook-Pro:develop qiuxuefei$ sed 's/[a-zA-Z]//g' passwd 

    #   (8)      

    #  .

    ##

    :*:-2:-2: ://:///

    :*:0:0: ://://

    • 直接修改文件的内容

    ​​​​​​​MacBook-Pro:develop qiuxuefei$ sed -i 's/Database/ssssssss/g' passwd

    转载于:https://my.oschina.net/u/3771523/blog/1634257

    展开全文
  • [root@svr5 ~]# history -c //清空自己的历史命令 [root@svr5 ~]# >~/.bash_history //清空记录文件 sed 支持管道 正则条件要放在//内 条件可以是行号或者/正则/ 没有条件时,默认为所有条件 指令可以是增、删、改...
  • SED截取指定时间段日志

    千次阅读 2018-09-05 08:59:36
    需求:对tomcat的日志每半个小时分析一次,如果出现指定...在执行过程中,发现如果用sed截取日期的可以,但是如果截取后面的时分秒需要用到正则表达式,下面是我些的脚本,可以参考下: #!/bin/bash base_path=...
  • 好久没用sed,这里记下来回一下 1.打印 16-08-13 到 结尾的行 ...目标是需要将02-04的09:25:55 和09:28:08 之间的日志截取出来: 命令如下: sed -n ‘/2015-05-04 09:25:55/,/2015-05-04 09:28:55/p’
  • 关于grep一些简单案例: #查看系统内存、缓存、交换分区 -e的作用是匹配多个表达式 [root@shell ~]# cat /proc/meminfo|grep...#其中:-R:递归,-n表示匹配的行号,-o只输出匹配内容 -E:支持扩展正则表达式 #查找/etc
  • find,grep,args,sed正则 配合使用 find ./ -type f -name "*.log" | xargs grep "test-test-test" find . -type f -exec grep -l "303i" {} \^((25[0-5]|2[0-4]\\d|[1]{1}\\d{1}\\d{...
  • awk 命令截取文档中的某段#awk -F ‘:‘ {print$1} 1.txt 打印第一段#awk-F ‘:‘ ‘OFS=‘#’ {print$1,$2,$3,$4} 1.txt 指定显示结果的分隔符为# , 也可以使用自定义字符连接每个段 {print$1"#"$2}匹配字符或字符...
  • sed与grep正则

    2017-01-16 14:42:00
    sed编辑器是一行一行的处理内容,正在处理的内容存放在缓冲区内,处理完后 按照选项的规定进行输出或者修改文件 option: -n 静默模式结合p可以只输出修改行,读取指定行数 -e  多操作指令 ...
  • Shell sed 截取文本段

    千次阅读 2012-06-22 12:29:58
    假设文件 text.txt 内容如下: ...3. 最后,使用 sed 截取内容。 例如: cat -n text.txt | grep 'start_mark ' | awk '{print $1}' cat -n text.txt | grep 'end_mark ' | awk '{print $1}' sed -n '10, 20p' text.txt
  • sed截取某个区间的内容

    千次阅读 2017-09-29 10:09:27
    2、如果不知道行号,可以根据正则表达式来截取 l00291777@linux-host-10_67_189_50:~/practice> sed -n '/bin:x:1/,/dhcpd:x:105/p' data_passwd.txt bin:x:1:1:bin:/bin:/bin/bash daemon:x:2:2:Daemon:/...
  • awk, sed 正则表达式

    2009-05-17 14:15:26
    匹配正则表达式和不匹配正则表达式 < <= > >= != == 关系运算符 空格 连接 + - 加,减 * / & 乘,除与求余 + - ! 一元加,减和逻辑非 ^ *** 求幂 ++ -- 增加或减少,作为前缀或后缀 $ 字段引用 in 数组成员 6. 记录...
  • 好了,搞起~ 过滤字符,shell工具常用的还是grep、awk、sed 提炼正则条件之后,三者通吃 条件 含义 ^ 匹配开头 $ 匹配结尾 [0-9]{3} 匹配字符集0-9内,3个字符 | 或 这里匹配该条件的正则表达式:’^([0-9]{3}-|([0...
  • awk 命令截取文档中的某段#awk -F ':' {print$1} 1.txt 打印第一段#awk-F ':' 'OFS=‘#’ {print$1,$2,$3,$4} 1.txt 指定显示结果的分隔符为# , 也可以使用自定义字符连接每个段 {print$1"#"$2}匹配字符或字符串#...
  • '表示什么含义,这五个符号是否可以在grep中使用,是否可以在egrep、sed以及awk中使用? '.'   表示一个任意的字符;  '*'   表示前面紧邻的那个字符有零个或多个,即前面紧邻的那个字符可以不存在,也可以有多...
  • 第十章 Shell编程之Sed与Awk 一、正则表达式概述 1、基础正则表达式 (1)基础正则表达式是常用的正则表达式部分 2、扩展正则表达式 (1)扩展正则表达式是对基础正则表达式的扩充 二、Sed工具概述 1、Sed基本语法:sed...
  • 正则sed awk

    2019-09-19 07:21:56
    1. sed sed介绍:主要是使用它的查找替换功能 sed命令格式:sed -n 'n'p filename 单引号里面的n是一个数字,表示第几行。 -n选项的作用就是只显示我们要打印的行,无关紧要的内容不显示 常用用法:打印p 删除d 不...
  • Sed 命令详解 & 正则表达式

    万次阅读 多人点赞 2018-03-16 08:23:42
    1.简介sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前...
  • 基础正则表达式 上图一定记住正则表达式是在文件中搜索字符串,通配符是在系统中搜索文件名 完全匹配就是内容必须一模一样才会列出...字符截取命令 上图printf是awk中需要用到的一个命令,严格上说不算字符提取命令.
  • 正则grep,sed,awk

    2017-11-04 11:16:01
    9.1- 9.7 正则grep,sed,awk 正则表达式是软件开发中非常常用的文本编辑和操作工具,他可以自定义规则去筛选处理字符串。虽然在Linux命令和shell中用的正则与软件开发中使用的正则不完全一样,但是两者也有很多相似之...
  • shell 正则截取字符串

    万次阅读 2014-09-23 11:30:37
    shell 正则截取字符串 用sed替换功能  echo 'weihongrao' |sed 's/wei\(hong\)rao/\1/g' 比如我有如下文件 test.txt 12344554534543232534sdfhosnfsdf wueorhalfsafsdfse ...djflajsdfasff
  • 案例1:使用正则表达式 案例2:sed基本用法 案例3:使用sed修改系统配置 案例4:sed多行文本处理 1 案例1:使用正则表达式 1.1 问题 本案例要求熟悉正则表达式的编写,完成以下任务: 利用egrep工具练习正则...
  • 0411正则sed、awk

    2019-04-12 13:20:00
    0411正则sed、awk 一、sed工具的使用 sed及awk工具,能够把替换的文本输出到屏幕,sed与awk都是流式编辑器,是针对文本的行来操作的。 1、打印某行或指定某几行或全部 命令格式为:sed -n ‘n’p filename ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,957
精华内容 1,582
关键字:

sed截取正则