为了账号安全,请及时绑定邮箱和手机立即绑定

实例妙解Sed和Awk的秘密

annieose Python工程师
难度初级
时长 3小时 8分
学习人数
综合评分9.80
53人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.9 逻辑清晰
  • 正则表达式元字符
    查看全部
  • 1. 范围字符 [], [^ ]表示取反 注意区分 ^字符 :表示以该字符开头 字符$:表示以该字符结尾 2. grep "^$" 表示搜索空行
    查看全部
  • sed 命令格式
    查看全部
  • grep '[a-zA-Z]' passwd grep -l '' logs/* -R
    查看全部
  • 一、a 命令 #新增加一行,在所选行的下面新增一行,并输入内容 1. 命令格式:sed '行号+a命令+需要增加的内容' 2. 例如:nl passwd | sed '5a======' #在第5行的下面新增一行,并写入======这些内容 3. 例如:nl passwd | sed '1,5a======' #在第1-5行每一行下面都增加一行并写入同样的内容 二、i 命令 #新插入一行,在所选行的上面插入一行,并输入内容 1. 命令格式:sed '行号+i命令+需要插入的内容' 2. 例如:nl passwd | sed '5i======' #在第5行的上面插入一行,并写入======这些内容 3. 例如:nl passwd | sed '1,5i======' #在第1-5行每一行上面都插入一行并写入同样的内容 三、c 命令 #替换一行,将所选定的行的内容替换成需要替换的内容 1. 命令格式:sed '行号+c命令+需要替换的内容' 2. 例如:nl passwd | sed '5c======' #将第5行的内容替换成======这些内容 3. 例如:nl passwd | sed '1,5c======' #将1-5行整体的内容都替换成======这些内容 四、d 命令 #删除一行,将所选行的内容全部删除 1. 命令格式:sed '行号+d命令+需要替换的内容' 2. 例如:nl passwd | sed '5d======' #将第5行的内容全部删除 五、案例一:优化服务器配置 1. 目标:在SSH的配置文件中加入相应的文本: Port 52113 PermitRootLogin no PerminEmptyPasswords no 2. 操作命令:sed '$a \ port 52113 \n permitrootlogin no' ssh_config #在文本尾部的下面增加两行,并写入相关内容($美刀符号定位文本的尾部) 六、案例二:文本处理 1. 目标:删除文本中的空行 2. 操作命令:sed '/^$/d' all.txt #删除文本中的空行
    查看全部
  • 一、基本操作命令 1. p命令:打印相关的行 1.1 sed 'p' passwd #会打印出两行,因为sed的原理是读入一行,输出一行,此处再加上p命令打印出来的一行,所以最后会打印出两行 1.2 sed -n 'p'passwd #加了-n选项之后,只会打印出相关的行,那些不相关的行则不会打印出来 二、行定位 1. 定位一行:x;(x为数字,行号的意思),/pattern/(pattern为正则表达式,正则两边加上//) 1.1 例如:sed -n '10p' passwd #通过行号定位,定位到第10行,并打印到屏幕但是无法看到行号 1.2 例如:nl passwd | sed -n '10p' #使用nl命令显示文件的行号,再通过管道传递给sed进行行处理。 1.3 例如:sed -n '/mooc/p' passwd #通过正则定位,定位含有mooc字符串这一行,并打印到屏幕 2. 定位几行: 2.1 x,y #(定位一个区间,x行到y行) 2.1.1 例如:nl passwd | sed -n '10,20p' 2.2 x,/pattern/ #(定位一个区间,x为开始的行号,pattren为结束的正则所表示的行) 2.2.1 例如:nl passwd | sed -n '10,/mooc/p' 2.3 /pattern1/,/pattern2/ #(定位一个区间,pattern1为开始的正则1所表示的行,pattern2为结束的正则2所表示的行) 2.3.1 例如:nl passwd | sed -n '/news/,/mooc/p' 2.4 "!" #感叹号,对所选的行进行取反 2.4.1 例如:nl passwd | sed -n '10!p' 2.4.2 例如:nl passwd | sed -n '10,20!p' 3.定位间隔几行: 3.1 first~step (first为开始的行,setp为步长也就是间隔几行) 3.1.1 例如:nl passwd | sed -n '1~2p' #定位从第1行开始,中间间隔2行的所有的行
    查看全部
  • 一、sed文本处理过程 1. 正则表达式选定文本调用sed操作命令进行处理 二、sed的格式 1. 命令行格式 1.1 sed [options] 'command' file(s) 1.1.1 options:-e ; -n 1.1.2 command:行定位(正则)+sed命令(操作) 1.1.3 例如:sed -n '/root/p' 1.1.4 例如:sed -e '10,20d' -e 's/false/true/g' 2. 脚本格式 2.1 sed -f scriptfile file(s)
    查看全部
  • 正则内容总结
    查看全部
    0 采集 收起 来源:正则总结

    2017-04-29

  • 案例1:匹配4-10位QQ号 ^[1-9][0-9]{3,9}$ 案例2:匹配15位或18位身份证号 ^[1-9]([0-9]{13}|[0-9]{16})[xX0-9]$ 案例3:匹配密码(密码规则为6-18位字符,包含a-zA-Z0-9_) ^\w{6,18}$
    查看全部
    0 采集 收起 来源:正则-案例演示

    2017-04-29

  • 一、任意字符串的表示 ".*" #匹配零次或多次任意字符 1. 例如:"^r.*" #匹配r开头后面有任意多个字符的行 2. 例如:"m.*c" #匹配m开头中间有任意多个字符,c结尾的字符串 3. 注意 m.*c与m..c的区别 二、逻辑字符 "|" #表示逻辑或 1. 例如:"bin/(false|true)" #匹配bin/false或者bin/true
    查看全部
  • 一、字符串 #将多个具体的字符组合起来 1. "root" #匹配root字符串 2. "1000" #匹配1000字符串 3. "m..c" #匹配m开头、中间有两个任意字符、c结尾的字符串。 4. "[a-z][a-z]" #匹配两个在小写字母a-z这个范围的字符串 5. "[0-9][0-9]" #匹配两个在数字0-9这个范围的字符串 6. 正则表达式会最大化的按照设定条件匹配,只要符合条件的结果都会匹配,在写正则表达式的时候要尽可能的给定一些限制条件,保证我们写出来的正则相对准确 二、字符串组合:通过重复、逻辑的方式将字符串拼接组合成表达式 1. 重复:在正则表达式中有三个字符可以表达重复,分别是 * + ? 1.1 * #零次或多次匹配前面的字符或子表达式 1.1.1 例如:se* #零次或多次匹配前面的e字符,可以匹配s、se、see、seeeeee.... 1.2 + #一次或多次匹配前面的字符或子表达式 1.2.1 例如:se+ #一次或多次匹配前面的e字符,可以匹配se、see、seeeeee.... 1.3 ? #零次或者一次匹配前面的字符或子表达式 1.3.1 例如:se? #零次或一次匹配前面的e字符,可以匹配s、se 1.4 ( ) #将多个字符或字符串组合成一个子表达式 1.4.1 例如:(se)* #零次或多次匹配前面的se字符,可以匹配 任意不包含se的字符或字符串甚至空行、se、sesesese 1.4.2 例如:(se)+ #零次或多次匹配前面的se字符,可以匹配 se、sesesese 1.4.3 例如:(se)? #零次或多次匹配前面的se字符,可以匹配 任意不包含se的字符或字符串甚至空行、se 2. 重复特定次数:{n,m} #n表示重复的最小次数,m代表重复的最大次数 2.1 所以前面的 *:等价于 {0,}、+:等价于{1,}、?:等价于{0,1} 2.2 例如:[0-9]{2,4} #匹配2-3位在数字0-9这个范围的数字
    查看全部
  • 一、边界字符:头尾字符 1. 头字符 ^ :放在单词的前面,代表以某个单词开始的行 1.1 例如: ^root #匹配以这个root单词开始的行 1.2 注意与 [^] 的区别 2. 尾字符 $:放在单词的后面,代表以某个单词结尾的行 2.1 例如:$false #匹配以这个false单词结尾的行 3. 空行字符 ^$ #开头和结尾中间没有任何内容所以是空行字符 二、元字符:代表普通字符或者具有特殊意义的专用字符 1. \w:# 匹配任何字类字符,包括下划线 [a-zA-Z0-9_] 2. \W:# 匹配任何非字类字符 [^a-zA-Z0-9_] 3. \b:# 匹配单词的边界,用来分隔单词(只匹配边界字符的位置,而不匹配位置本身的这个字符。边界字符包括 ~`!@#$%^&*( )-=+[];:'"\|,<.>/? 等等这一类怪符号 )
    查看全部
  • 一、字符种类 1. 特定字符 2. 范围内字符 3. 任意字符 二、特定字符:某个具体的字符 1. 比如某个字符 '1' 某个字符 'a' 三、范围内字符:[] 1. 用[]表示 (中括号可以给需要匹配的字符设定一个范围,注意:中括号内只能匹配单个字符) 2. 例如:[0-9] #匹配0-9这个范围内的任意单个数字 3. 例如:[258] #匹配258这个三个数字中的任意单个数字 4. 例如:[a-z] #匹配小写字母a-z这个范围内的任意单个小写字母 5. 例如:[A-Z] #匹配大写字母A-Z这个范围内的任意单个大写字母 四、 取反字符 [^] #代表反向字符,可以对中括号内的字符范围进行取反(只能在中括号内使用) 1. 例如:[^a-z] # 匹配除了小写字母a-z这个字符范围之外的其他所有字符 五、任意字符 . # 匹配任意一个字符 (在中括号外使用) 注意 与 [.] 和 \. 的区别 #括号 #中括号的内 . 代表的是这个点字符本身的含义,在前面加 \ (转移字符)代表的是这个对这个点字符进行转义,(在此处转义成这个点本身的含义)
    查看全部
  • 正则总结
    查看全部
    0 采集 收起 来源:正则总结

    2017-04-25

  • 任意字符
    查看全部

举报

0/150
提交
取消
课程须知
1、有Linux使用基础。 2、有简单的编程基础(如C语言、脚本语言等)。
老师告诉你能学到什么?
1、正则表达式的规则解密与组合方法 2、sed的行处理原理 3、使用sed进行文本行处理 4、使用sed进行文本替换 5、sed的替换使用技巧和高级应用 6、awk的内置参数包括字段等的使用 7、awk的逻辑处理和内嵌程序使用方法 8、什么时候该用sed或awk

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!