正则表达式分为两种
基本正则表达式
扩展正则表达式
基本正则表达式
^:以…开头
grep “^I” 文件名
: 以 . . . . . . . . 结 尾 g r e p " m :以........结尾 grep "m :以........结尾grep"m" 文件名
用正则表达过滤ls -l结果中事目录的
ls -l|grep “^d”
^KaTeX parse error: Expected group after '^' at position 25: …行号 显示空行 grep "^̲" 文件名
. :匹配任意一个字符 . : 显 示 以 . 结 尾 的 行 g r e p − n " . " 文 件 名 g r e p " . :显示以.结尾的行 grep -n "." 文件名 grep ". :显示以.结尾的行grep−n"."文件名grep"." 文件名
\:转义符
查看以.结尾的行正确的语法是:grep “.$” 文件名
:匹配前一个字符0次或者0次以上
grep "0" 文件名
.:匹配所有字符 包括空行
grep "." 文件名
^.:匹配多个字符开头
.$:匹配多个字符结尾
扩展正则表达式: 应用范围 grep -E或egrep
- 匹配前一个字符1次或多次
egrep .+ 文件名
? 匹配前一个字符0或1次
egrep .+?
ifconfig eth0|sed -n ‘2p’|sed ‘s#^.inet##g’|sed 's# net.$##g’ 只显示ip
[:/]+ 匹配括号内的:或/字符1次或多次
|:同时匹配多个字符串
grep -E “I|my” 文件名
sed:流编辑器
常用功能有对文件实现快速增删改查
查询2,3行
sed -n “2,3p” 文件名
或 head -3 文件名|tail -2
删除含有zq字的行
sed /zq/qing 文件名(不改变原文件)
删除2,3行
sed 2,3d 文件名
将zq全部替换成qing
sed s#zq#qing#g 文件名
再zq.txt 文件第二行后追加aaa
sed ‘2a aaa’ zq.txt
awk命令参数选项说明
-F 指定字段分隔符
-v 定义或修改一个awk内部的变量
$0 当前整行记录
$n 当前记录的第n个列 字段间由FS或-F参数指定分割符
NF 当前记录中列的个数 也包含多个列
$(NF-n) 倒数第n+1列 n为数字
NR 已经读出的记录数 也就是行号 从1开始
sed -n ‘2,3p’ 1.txt 取1.txt文件的2-3行
awk ‘NR>1&&NR<4’ 1.txt 取1.txt文件的2-3行 NR表示行号 &&表示并且
awk ‘NR2,NR3’ 1.txt 取1.txt文件的2-3行 NR表示行号 逗号表示从第二到第三行
awk ‘NR2’ 1.txt 取1.txt文件的1行
awk ‘/root/’ 1.txt 取1.txt文件的root字符串的行
awk ‘/[r]/’ 1.txt 过滤出以非r字符开头的行
awk -F “:” ‘{print NR,1,
3
,
3,
3,NF}’ 1.txt
ifconfig ens33|awk 'NR2{print $2}’ 利用管道获取ip地址
==等于
=赋值符号 a=1
过滤oldboy文件带有oldboy的行
grep “oldboy” oldboy.txt
sed -n ‘/oldboy/p’ oldboy.txt
awk ‘/oldboy/’ oldboy.txt
删除带有oldboy的行
sed ‘/oldboy/d’ oldboy.txt
分割符 awk处理的列默认是空格分隔
列符号 $1 第一行 $2 第二行
N
F
最
后
一
块
列
倒
数
第
二
列
NF 最后一块列 倒数第二列
NF最后一块列倒数第二列(NF-1)
awk ‘{print $1,
2
,
2,
2,NF}’ oldboy.txt 逗号分隔
取出/etc/passwd第三四列
awk -F “:” ‘{print $3,$4}’ /etc/passwd
取出文件的1 3 最后一列 打印出行号
awk -F ‘:’ ‘{print $1,
3
,
3,
3,NF,NR}’ /etc/passwd
取出ens33ip
ifconfig ens33|awk ‘NR==2’|awk ‘{print $2}’
取出ip
awk -F “:” ‘{print $2}’ c6.txt |awk ‘{print $1}’
cut命令
cut取列取文件的1 2 3 /etc/passwd
cut -d: -f1,2,3 /etc/passwd
cut按字符数取列
cut -c 1 /etc/passwd 1-10 取1-10的字符
打印uid小于10的 登入shell为bash的用户
awk -F “:” ‘KaTeX parse error: Expected 'EOF', got '&' at position 5: 3<10&̲&NF=="/bin/bash"{print $1}’ /etc/passwd
awk -F “:” ‘KaTeX parse error: Expected 'EOF', got '&' at position 5: 3<10&̲&NF~/bash/{print $1}’ /etc/passwd
awk -F “[😕]” ‘KaTeX parse error: Expected 'EOF', got '&' at position 5: 3<10&̲&NF==“bash”{print $1}’ /etc/passwd