ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux正则表达式部分使用(5)

2022-03-26 11:04:22  阅读:180  来源: 互联网

标签:sbin nologin grep 正则表达式 Linux cat awk 使用 root


在linux中,用到正则表达的常用工具有:grep,sed,awk等。

grep


-c(count) :打印符合要求的行数

-i (ignore-case):忽略大小写

-n (line-number):在输出符合要求的行的同时连同行号一起输出

-v (invert-natch):打印不符合要求的行

-A (after-context):后跟一个数字(有无空格都可以),例如 –A2则表示打印符合要求的行以及下面两行

-B (before-context):后跟一个数字,例如 –B2 则表示打印符合要求的行以及上面两行

-C (context):后跟一个数字,例如 –C2 则表示打印符合要求的行以及上下各两行

^                      :表示行的开始

$                       :表示行的结尾

-E                     :表示组合

.                     :表示任意一个字符

*                     :表示零个或多个前面的字符。

grep开始实践

 cat  pwd 

点击查看代码
root:x:0:0:root:/root:/bin/bash
root:x:0:0:Root:/root:/bin/root
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
zabbix:x:997:995:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
nginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologin
named:x:25:25:Named:/var/named:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

1 包含root

cat pwd  | grep "root"  

 

2 顺便打印行数

cat pwd  | grep -n "root"

 

3 不区分大小写或精准匹配

cat pwd  | grep -n -i  "root"

cat pwd  | grep -n -w  "root"

 

4 反选

cat pwd  | grep -n -v  "root" 

 

5 组合

cat pwd  | grep -n -E  "root|mysql"

 

6 以root开始

cat pwd  | grep -n   "^root"

 

7 以root结尾

cat pwd  | grep -n   "root$"

 

8 -A    -B   -C

cat pwd  | grep -n -A2   "root" 

cat pwd  | grep -n -B2   "root"  

cat pwd  | grep -n -C2   "root" 

 

9 字符. 任意一个字符

cat pwd  | grep -n    "r..t" 

 

10 字符* 表示零个或多个前面的字符。

cat pwd  | grep -n    "ro*t"

 

sed

sed全称是:Stream EDitor。(流编辑器)

语法:sed 参数 文件

-e command,–expression=command允许多台编辑。

-h,–help打印帮助,并显示bug列表的地址。

-n,–quiet,–silent取消默认输出。

-f,–filer=script-file引导sed脚本文件名。

-V,–version打印版本和版权信息。

sed开始实践

cat ttt

点击查看代码
1111
2222
3333
4444
5555
6666
7777

p表示打印行。

1 一行

cat ttt | sed -n "1p"   

 

2 多行 

cat ttt | sed -n "1,3p"   

 

3 包含某个字符串的行

cat ttt | sed -n  "/111/p"   

 

4 -e可以实现多个行为

cat ttt | sed -n -e "1p" -e "/222/p"

 

5 替换字符或字符串:

‘s’ 就是替换的命令, ‘g’ 为本行中全局替换,如果不加 ‘g’ 只换该行中出现的第一个。

除了可以使用 ‘/’ 作为分隔符外,还可以使用其他特殊字符例如 ‘#’ 或者 ‘@’ 都没有问题。

sed '1s/11/ggg/g' ttt

 

6 直接修改文件的内容

sed -i '2s/22/gg/g' ttt

 

awk

awk是一个报告生成器,拥有强大的文本格式化能力。它的命名方式也是由三位大佬,分别叫Aho,Weinberger,Kernighan,的三个人,awk命令取得他们的名字首字母。

awk基本语法:

awk [option] 'pattern{action}' file1,file2,...filen

awk开始实践

cat testpwd 

root:x:0:0:root:/root:/bin/bash
root:x:0:0:Root:/root:/bin/root
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

cat awk_test.txt

name    age     score
lqd     45      87
my      47      88
wrz     25      98
wnz     56      98

-F 选项的作用是指定分隔符,默认空格或者tab为分隔符。 Print为打印的动作,用来打印出某个字段。

\$1为第一个字段,\$2为第二个字段,依次类推,有一个特殊的那就是$0,它表示整行。

 

1 截取文档中的某个段:

cat awk_test.txt | awk '{print $1}'

 

2 匹配字符或字符串

cat awk_test.txt | awk '/name/'

cat awk_test.txt | awk '/name/{print $2}'

cat awk_test.txt | awk '/name/{print $2,$3}'

 

3 条件操作符:

awk中是可以用逻辑符号判断的,比如 ‘==’ 就是等于,另外也有 >, ‘>=, ‘<, ‘<=, ‘!= 等等

cat testpwd | awk -F ":" '$3>1 {print $3}'

cat testpwd | awk -F ":" '$3>1 {print $1}'

 

4 awk的内置变量:

NR 行号,当前处理文本行的行号

NF 当前行的字段的个数

不止两个

cat testpwd | awk -F ":" '{print NR}'

cat testpwd | awk -F ":" '{print NF}'

标签:sbin,nologin,grep,正则表达式,Linux,cat,awk,使用,root
来源: https://www.cnblogs.com/tanff/p/15320161.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有