oldboy Linux:

Linux正则表达式与三剑客

正则表达式是为处理大量的字符串及文本而定义的一套规则和方法。

Linux三剑客的正则表达式特点:  以行为单位进行操作,每一次仅操作一行;可以将复杂的处理任务化繁为简,提高Linux的效率;仅被三剑客命令支持,其他命令无法使用。

1.利用命令ipconfig取出IP地址:ifconfig eth0 | sed -rn '2s#^.*inet(.*)net.*$#\1#gp'

正则表达式易混淆事项:

与通配符区别;与开发人员正则不一样,其一般是Perl兼容正则表达式;Linux系统三剑客正则表达式

环境准备:

执行命令: export  LC_ALL=C    配置后操作时不会出现异常匹配情况

正则表达式分类:

基本正则表达式:BRE basic regular expression

对应元字符:^$[].

【 显示行号:cat -n   less -N

^  表以什么开头,比如grep "^cd"  表过滤以cd开头的行

$  表以什么结尾   比如grep  "cd$" 表过滤以cd结尾的行

^$  表空白     比如:grep -v "^$"表过滤空白取出没有空白的行(-v表取反,-n列出行号)

.   表匹配任意一个且只有一个字符,与通配符?效果一样。

\   让有意义的字符脱掉马甲,还原本意。 grep "\.$"表以.结尾的行而不是任意一个字符结尾

*   表重复前面字符0次或多次

.*  表所有内容        grep -n ".*"表显示所有内容并打印行号

^.*  匹配任意字符开头的行

.*$  匹配任意字符结尾的行

[abc]  匹配abc任意字符亦可写成[a-c]

[^abc]  匹配不包含abc任意字符的行,^表取反

扩展正则表达式:ERE extended regular expression

对应元字符:(){}?+|  egrep=grep -E

【-o 可深刻理解

+       匹配一个字符或1次以上多次

[:/]+   匹配括号内的:或\字符一次或1次以上

?       匹配前一个字符0次或1次

|      表 或者 的意思,可同时过滤多个字符串  比如:egrep "a|b" 过滤匹配到a或者b字符的行

a{n,m}  匹配前一个字符最少n次最多m次

a{n,}  匹配前一个字符最少n次

a{n} 匹配前一个字符正好n次

a{,m} 匹配前一个字符最多m次

()  表括起来的是一个整体,可被\n应用,后项应用

\n  后项应用,()\n表取出第n个括号里的内容   (0)(0)\1\2等价于0000   (0)等价于\1

预定义特殊中括号表达式:正则表达式中已经定义好了的,可以直接使用中括号表达式

[:alnum:]  任意匹配一个字母或者数字相当于[a-zA-Z0-9]                             示例:[[:alnum:]]

[:alpha:]  匹配任意一个大小写字母字符相当于[a-zA-Z]                               示例: [[:alpha:]]

[:blank:]  匹配空格与制表符(横向和纵向)                                               示例: [[:blank:]]

[:digit:] 匹配任意一个数字字符相当于[0-9]                                         示例: [[:digit:]]

[:lower:] 匹配小写字母 相当于[a-z]                                                  示例:[[:lower:]]

[:upper:] 匹配大写字母 相当于[A-Z]                                        示例:[[:upper:]]

[:punct:]  匹配标点符号                                      示例:[[:punct:]]

[:space:] 匹配一个包括换行符回车等在内的所有空白字符             示例: [[:space:]]

[:graph:] 匹配任意一个可以看得见的且可以打印的字符               示例: [[:graph:]]

[:xdigit:]  任意一个16进制数即[0-9,a-f,A-F]                              示例:[[:xdigit:]]

[:cntrl:]  任意一个控制字符(ASCII字符集中前32个字符)         示例:  [[:cntrl:]]

[:print:] 任何一个可以打印的字符                  示例:[[:print:]]

元字符表达式介绍:是一种Perl风格的正则表达式

\b    匹配单词边界等价于grep-w    例如:\boldboy\b   只匹配oldboy单词不匹配oldboy字符串

\B   匹配非单词边界  例如:oldboy\B 匹配oldboy123中的oldboy不匹配单独的oldboy单词

\w  匹配字母,数字,下划线等价于[[:alnum:]]

\W  匹配字母数字下划线以外的字符等价于[^_[:alnum:]]

\d  匹配单个数字字符,需要使用grep -P才能识别

\D 匹配单个非数字字符,需要使用grep -P才能识别

\s  匹配1位空白字符 ,需要使用grep -P才能识别

\S 匹配1位非空白字符,需要使用grep -P才能识别

二。三剑客

grep:擅长过滤查找内容 筛子

-v :       invert取反;        -i: ignore不区分大小写;

-n:  number对输出的内容显示源文件 的行号        -w: word按单词为单位过滤

-o:  只输出匹配的内容       -c:显示过滤的字符串和它之间之后的多少行

sed: 流编辑器       擅长取行,替换,删除,追加

功能说明: sed是操作,过滤和转换文本内容的强大工具,对文件实现增删改查。过滤指定字符串和行

语法格式: sed 选项 sed内置命令字符 输入文件

选项: -n:  取消默认sed输出,常与sed内置命令p连用

-i:   直接修改文件内容,而不是输出终端。不加则是修改内存中的数据并不会影响磁盘的文件

-e:  允许多次编辑

内置命令符

s:  替换

g:  global全局替换

a: append表追加文本,在指定行后面添加一行或多行。

d:   delete表示删除匹配行

i:    insert表插入文本,在指定行前插入一行

p:  print表示打印匹配行的内容,通常与-n连用

例子:

1.打印二三行    sed -n '2,3p' file

2.过滤含有old字符串的行   sed -n '/old/p' file

3.删除含有old字符串的行   sed '/old/d' file

4.将old字符串替换new     sed 's#想替换啥#有啥替换#g' file     (vim中替换:s%/old/new/g)

5.在file文件第二行追加文本   sed  '2a Linux like linux'  file (插入多行可linux\apache\zabbix)

6.ifconfig eth0|sed -n 2p | sed 's#^.*inet ##g' | sed 's# netm.*$##g'  优化    ifconfig eth0|sed -ne  's#^.*inet ##g' -e 's# netm.*$##gp'     优化 ifconfig etho | sed -nr '2s#^.*inet (.*) netm.*$#\1#gp'

7.

三剑客老大: awk 是一种编程语言     擅长取列   【cut按列切割,-d指定切割符,-f指定列,多列用,分开,或者n-m】

语法: awk 参数 '条件 {动作}'

参数:  -F   指定分隔符

动作:  列:$1 打印第一列 ;$2 第二列 ; $0  整行;  $NF最后一列; $(NF-1)倒数第二列;$NR 行号

例子: awk 'NR>1&&NR<4' file 输出第二和第三行内容

awk '/^[^r]/' file        输出非root的行

awk '/root/'  file          输出含有root的行

awk -F ":"  {print NR,$1,$3,$NF}'  file 打印1,3和最后一行并显示行号。

echo 1:-::2==-==::==3==:::==4==:::| awk -F "[:=-]+" '{print $3,$4}'   结果为:3和4     【 [:=-]+ 一堆分割符算一个】

echo ==::--1:-::2==-==::==3==:::==4==:::| awk -F "[:=-]+" '{print $3,$4}'   结果为 2和3

awk -F ":" '$1~/root/ {print $NF}' file  过滤文件中第一行内容匹配root的字符串,把符合的行的最后一列输出 【~表匹配】

随机1(oldboy)相关推荐

  1. python随机字典数据_python数据类型-字典

    本节主要内容: 1. 字典的简单介绍 2. 字典增删改查和其他操作 3. 字典的嵌套 字典 字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成.在dict中key是唯一 ...

  2. Shell脚本批量创建用户并随机生成密码

    Shell脚本批量创建用户并随机生成密码 要求:批量创建10个系统账号oldboy01-oldboy10,并设置生成密码(密码不同). 实现脚本: #!/bin/bash #Question3 for ...

  3. linux运维初级课前实战随机考试题含答案(笔试+上机)

    linux运维初级课前随机考试: 一.笔试部分: 1.开机配置服务自启动的文件路径是? 解答: /etc/rc.local 2.网卡配置文件的路径 解答: /etc/sysconfig/network ...

  4. 批量创建10个用户stu01-stu10,并且设置随机8位密码

    方法1: [root@oldboy /]# echo stu{01..10}|tr " " "\n"|sed -r 's#(.*)#useradd \1 ; p ...

  5. 批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解

    批量梯度下降(BGD).随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解 </h1><div class="clear"></div> ...

  6. linux ftp随机端口,linuxFTP生产环境配置

    1.ftp采用两个端口控制: A 20端口用于数据传输. B 21端口用于控制,或指建立TCP连接. 2.主动方式连接过程: [注意]:C表示客户端 S表示服务器端 A. S端要开启20.21端口: ...

  7. python random 随机生成一个数

    import random # 0 到 1 之间的随机浮点数 print(random.random()) # 1到20之间随机选取一个整数 print(random.randint(1, 20)) ...

  8. sklearn.model_selection.train_test_split随机划分训练集和测试集

    1 函数用途 train_test_split()是交叉验证中常用的函数,功能是将数组或矩阵按比例随机划分为训练集和测试集,使用方法为: X_train,X_test, y_train, y_test ...

  9. PyTorch 安装和基本运算— Tensor 的数据类型(浮点型、整型、随机浮点型等)、基本运算(绝对值、求和、裁剪、求商、求积、求幂等)、Tensor 与 Numpy 转换

    PyTorch 的安装可以到官网 https://pytorch.org/,选择适合自己机器以及安装方式,执行对应的命令即可. 除了安装 PyTorch 之外,建议也安装 torchvision 包. ...

最新文章

  1. CS131专题-8:图像纹理
  2. 如何提升深度学习性能?数据、算法、模型一个都不能少
  3. 王家林 云计算分布式大数据Hadoop实战高手之路第七讲Hadoop图文训练课程:通过HDFS的心跳来测试replication具体的工作机制和流程...
  4. 马婕 2014MBA专硕考试 报刊选读 6(转)
  5. leetcode 1143. Longest Common Subsequence | 1143. 最长公共子序列(动态规划,暴力递归->傻缓存->dp)
  6. MySQL数据库迁移到PostgreSQL
  7. React v16.0正式版发布
  8. 基于ARP协议获取局域网内主机MAC地址
  9. 二十六、K8s系统强化2-seccomp与sysdig
  10. 程序员内功:八大排序算法
  11. ApacheCon Asia 2022 开启报名:Pulsar 技术议题重磅亮相
  12. 单片机原理及应用之AT89S52
  13. 计算机毕设结束语致谢,毕业设计结束语和致谢
  14. ReferenceError: xxx is not defined
  15. 八码数-IDA*算法
  16. Oracle培训的一些感受
  17. 建站四部曲之Python爬虫+数据准备篇(selenium)
  18. 北京大学CMA—让CMA考试更简单
  19. 【20210109期 AI周报】该重视 Vision Transformer 了
  20. 墨者学院-sqlserver数据库

热门文章

  1. uniapp组件-uni-segmented-control分段器
  2. 安卓(Android)项目Gradle编译项目时间太长,要等半个小时或者更久的解决
  3. 解决ES search.max_buckets参数问题
  4. 概率论—高中基础知识
  5. 不重复订单号生成的方法
  6. 程序员学数学读哪本书?(文末抽奖赠书)
  7. c 语言 网络唤醒,Java网络编程————UDP实现ThinkPad S5网络唤醒-Go语言中文社区...
  8. 对于无法恢复Adventureworks2008实例数据库的BAK文件的处理
  9. 一个蜂巢 状的布局
  10. 使用旋转动画让图片转起来