linux基础(33)--正则表达式--RHEL6.5

2024-05-15 16:58

本文主要是介绍linux基础(33)--正则表达式--RHEL6.5,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  本文主要讲解正则表达式、grep、sed、awk、cut的使用。

1. 正则表达式

  正则表达式又称正则表示法、常规表示法。

  正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,是指用来描述或者匹配一系列符合某个句法规则的字符的字符串。

  正则表达式即用某种模式去匹配一类字符串。

2. grep 

 参数:

  -i   忽略大小写

  -v  反转

  -n 显示行号

  --color 关键词高亮

  以root开头的行:

  grep "^root" /etc/passwd

  以root结尾的行:

  grep "root$" /etc/passwd

  包含root的行,显示行号, 高亮:

  grep -n "root" /etc/passwd  --color

  * 重复前面字符>=0次:

  grep "root*" /etc/passwd --color

  [list] 字符集合:

  grep [a-z] /etc/passwd --color

  "^"放在"[ ]"里面表示否的意思,显示不以#开头的行:

  grep ^[^#] /etc/passwd    #等价于   grep -v "^#" /etc/passwd

  包含数字的行:

  grep [0-9] /etc/passwd --color

  以大写字母开头的行:

  grep "^[A-Z]" /etc/passwd --color

  不以大写字母开头的行:

  grep "^[^A-Z]" /etc/passwd --color    #等价于 grep -v "^[A-Z]" /etc/passwd --color

  显示空白行及其行号:

  grep -n "^$" /etc/passwd --color

  "." 代表有一个字符:

  以r开头t结尾的行:

  grep "^r.*t$" /etc/passwd --color

  精确匹配, 即不会拆分单词:

  grep "\<root\>" /etc/passwd --color

3. sed

  sed是一个流编辑器,与vim区别是sed不需要进行交互。

  sed 编辑器逐行处理文件的内容,正在处理的内容存放在模式空间,处理完成后按照选项的规定进行输出。

  sed是一种在线编辑器,一次处理一行的内容,处理时把当前处理的行存储在临时缓冲区中,成为模式空间,接着使用sed处理缓冲区中的内容,处理完成后把缓     冲区的内容发送往屏幕,接着处理下一行,不断重复,直到文件的结尾,但是文件的内容并未发生改变,想要改变后的文件可以采用重定向的方式完成。

  替换: root换为AAA

  sed "s/root/AAA/" /etc/passwd  #默认只是替换第一次出现的字符串,全局替换使用g即可, sed "s/root/AAA/g" /etc/passwd

  此处分隔符使用的是"/", 当"/"不方便时可以使用其他合适的分隔符进行替代。

  root两侧加上括号:

  sed "s/root/(&)/" /etc/passwd

  注释掉所有以字母开头的行:

  sed "s/^[a-z]/#&/g" /etc/passwd

  多条件 -e:

  sed -e "3,5s/root/AAA/" -e 9,11s/root/AAA/" /etc/passwd  > a.txt   #从指定行范围内匹配,并将结果重定向到a.txt

  显示文件地行:

  sed -n "3p" /etc/passwd

  显示前三行:

  sed -n "1,3p" /etc/passwd

  显示全文内容,除了第三行:

  sed -n "1,3!p" /etc/passwd

  显示文件第三行和之后的三行:

  sed -n "3, +3p" /etc/passwd

  文件头插入###:

  sed "1i###" /etc/passwd > a.txt

  文件尾插入@@@:

  sed "$a@@@" /etc/passwd > a.txt

  在第2行后插入两行内容:

  sed "2a hello\

  world" /etc/passwd

  文件第3行换成$$$:

  sed "3c$$$" /etc/passwd > a.txt

  -i 选项可以直接修改文件的内容:

  sed -i "s/root/AAA" /etc/passwd

  H 复制, G粘贴,把文件的3-5行复制到文件的末尾:

  sed "2,4H;$G" /etc/passwd > a.txt

  d 删除行, 删除空行:

  sed "/^$/d" /etc/passwd > a.txt

  w 写入到新的文件,把包含root的行写入到文件a.txt中:

  sed "/root/w a.txt" /etc/passwd

4. awk

  awk 是一个优秀的文本处理工具,是一个遇强则强的工具。

  简单说awk是一种用户文件处理的编程语言。

  任何awk语句都是由模式和动作组成,一个awk脚本可以有很多的语句,模式决定动作语句的触发条件和触发时间。

  特殊字段:

  BEGIN语句设置计数和头部信息,在任何动作之前进行。

  END语句输出统计结果,在完成动作之后执行。

  分隔符默认是空格,可以使用-F自行指定。

  获取网卡eth0的ip地址:

  ifconfig | grep "\<inet\>" | awk "NR==1" | awk  '{print $2}' |  awk -F: '{print $2}'

  获取UID大于500的用户的用户名和用户登录shell:

  cat /etc/passwd | awk -F: '$3>500 {print $1 "\t" $7}'

  获取UID大于500且登录shel为/bin/bash的用户名:

  cat /etc/passwd | awk -F: '$3>500 && $7=="/bin/bash" {print $1}'

  BEGIN先于一切动作之前执行:

  cat /etc/passwd | awk -F: END{print "username"} $3 > 500 && $7 == "/bin/bash" {print $1} '

  END在一切动作之后执行:

  cat /etc/passwd | awk -F: 'BEGIN{size=10;} $3 > 500 END{print "size is" size / 10}'

5. cut

  cut是一个选取命令,即将一段数据经过分析获取我们想要的部分。

  -b   字节为单位进行分割

  -c   字符为单位进行分割

  -d  自定义分隔符,默认为制表符

  -f   与-d一起使用,指定显示哪个区域

   以字节为单位分割,显示第3个字节包含数字9-12的行:

   tail -3 /etc/passwd | cut -b 3, 9-12

   显示每行的第3-6个字符:

   cat /etc/passwd | cut -b 3-6

   cut只能处理以一个空格分割的文本,多个空格间隔则无法处理。

   现在正在做系列视频课程,课程中会提供视频中涉及的操作文档、软件包,系列课程内容更加完整、贴近实际工作。欢迎感兴趣的小伙伴到[网易云课堂](https://study.163.com/course/introduction/1005734052.htm)进行学习。

  

  

  

  

  

 

  

  

  

  

  

  

 

这篇关于linux基础(33)--正则表达式--RHEL6.5的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/992392

相关文章

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、