12. Shell 의 정규 표현 식 + 요약 + 사례
13595 단어 Shell
정규 표현 식 이 무엇 입 니까?
문자 모드 줄 임 말 RE 는 지정 한 문 자 를 찾 는 데 사 용 됩 니 다. 많은 프로 그래 밍 언어 는 정규 표현 식 을 지원 합 니 다. 문자열 작업 정규 표현 식 개념 은 유 닉 스 의 도구 소프트웨어 에서 최초 로 보급 되 었 습 니 다. 예 를 들 어
sed grep
정규 표현 식 을 지원 하 는 프로그램 입 니 다. locate find vim grep sed awk
뭐 공부 해요?메 일 박스 일치 주민등록번호 핸드폰 번호 은행 카드 일치 특정 문자열 특정 처리
정규 중의 명사 해석.
c
* ao o
.첫 번 째 정규 표현 식
. 匹配除了换行符以外的任意单个字符
* 前导字符出现0次或者连续多次
.* 任意长度字符
^ 行首 以..开头
$ 行尾 以..结尾
^$ 空行
[] 匹配括号里任意单个字符或一组单个字符
[^] 匹配不包含括号内任一单个字符或者一组单个字符
^[] 匹配以括号里任意单个字符或一组单个字符开头
^[^] 匹配不以括号里任意单个字符或一组单个字符开头
################################################
grep 'g.' 1.txt
匹配包含g和后所跟任意单个字符的行 (grep 行过滤)
grep 'go*' 1.txt
匹配g和o0个或多个的行
grep 'go.*' 1.txt
匹配go和后面任意长度字符的行
grep '^gel' 1.txt
匹配以gel开头的行
grep 'abc$' 1.txt
匹配以abc结尾的行
grep '^[abc]' 1.txt
匹配以a或b或c开头的
grep '^[abc]' 1.txt
匹配不以a或b或c开头的
\< 取单词的头
\> 取单词的尾
\<\> 精确匹配
\{n\} 匹配前导字符连续出现n次
\{n,\} 匹配前导字符至少出现n次
\{n,m\} 匹配前导字符出现n次与m次之间
\(\) 保存被匹配的字符
\d 匹配数字 grep -P 要加P [0-9]
\w 匹配字母数字下划线 grep -P 要加P [a-zA-Z0-9_]
\s 匹配空格 制表符 换页符 grep -P 要加P [\t\r
]
##############################################
grep '\ 1.txt
匹配里面单词以hel为头
grep 'rld\>' 1.txt
匹配里面单词以rld为尾
#匹配内容里单词的头或尾 不是单词不匹配
grep '\' 1.txt
精确匹配hello这个单词 注意是单词
grep -w hello 1.txt 和这个精确匹配差不多
grep 'go\{2\}' 1.txt
匹配g和前导字符o连续出现2次的
grep 'go\{2,\}' 1.txt
匹配g和前导字符o至少出现2次
grep 'go\{2,4\}' 1.txt
匹配g和前导字符o出现2-4次
grep '[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{1\}\.[0-9]\{1\}' 1.txt
匹配ip 192.168.0.1 [0-9]表示数字 3 3 1 1 出现次数 \. 转义.
vim
:%S/10.10.1.1/10.10.1.2/g
:%s/\(10.10.1\).1/\1.254/g
:%s/helloworld yourself/hiworld myself/g
:%s/hello\(world \)your\(self\)/hi\1my\2/g
只替换掉不同的部分
grep
추가 -E
또는 사용 egrep
sed
을 사용 하려 면 추가 -r
+ 匹配一个或多个前导字符 grep -E bo+ 匹配boo,bo
? 匹配零个或一个前导字符 grep -E bo? 匹配b,bo
| 或 grep -E a|b
() 组字符 看成整体 grep -E (my|your)self 匹配myself或yourself
{n} 前导字符重复n次
{n,} 前导字符重复至少n次
{n,m} 前导字符重复n到m次
제2 류 정규
[:alnum:] 字母与数字字符 [[:alunm:]]+
[:alpha:] 字符字符(包括大小写) [[:alpha:]]{4}
[:blank:] 空格与制表符 [[:blank:]]*
[:digit:] 数字 [[:digit:]]?
[:lower:] 小写字母 [[:lower:]]{4,}
[:upper:] 大写字母 [[:upper:]]+ [A-Z]
[:punct:] 标点符号 [[:punct:]]
[:space:] 包括换行符,回车在内的所有空白 [[:space:]]+
grep -E [[:alunm:]]+
정규 표현 식 총화
找数字 [0-9]
找字母 [a-zA-Z]
找标点符号 [[:punct:]]
以什么为首 ^key
以什么为结尾 key$
包含什么或者不包含什么 [abc] ^[abc][^abc]^[^abc]
找前导字符出现0次或连续多次 ab*
找任意单个字符 ab.
找任意字符 ab.*
找前导字符连续出现几次 {n} {n,} {n,m}
找前导字符出现1次或者多次 go+
1.1.1.1
[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}
([0-9]{1,3}\.){3}[0-9]{1,3}
\d+\.\d+\.\d+\.\d+
(\d+\.){3}\d+
케이스
1.查找不以大写字母开头的行
grep '^[^A-Z]'
grep -v '^[A-Z]'
grep '^[^[:upper:]]'
2.查找所有数字的行
grep [0-9]
grep -P '\d'
3.查找一个数字和在一个字母连起来
grep -E '[0-9][a-zA-Z]|[a-zA-Z][0-9]'
4.查找不以r开头的行
grep -v '^r'
5.查找以数字开头的行
grep '^[0-9]'
6.查找以大写字母开头的
grep '^[A-Z]'
7.查找以小写字母开头的
grep '^[a-z]'
8.查找以点结束的
grep '\.$'
9.去掉空行
grep -v '^$'
10.查找完全匹配abc的行
grep '\'
grep -w 'abc'
11.查找A后面有3个数字的行
grep 'A[0-9]{3}'
12.统计root在/etc/passwd出现几次 -o 只显示匹配项
grep -o 'root' /etc/passwd | wc -l
13.用正则找出自己的ip地址 广播地址 子网掩码
ifconfig|grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}'
14.找出文件中的ip地址并且打印替换为172.16.2.254
grep -o -E '([0-9]{1,3}\.){3}[0-9]{1,3}' 1.txt | sed -n 's/192.168.0.\(254\)/172.16.2.\1/p'
15.找出文件中的ip地址
grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' 1.txt
16.找出全部是数字的行
grep -E '^[0-9]+$'
17.找出邮箱地址
grep -E '^[0-9a-zA-Z]+@[a-z0-9]+\.[a-z]+$'
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Shell alias 명령에 별칭을 설정하는 방법명령에 별명을 설정하면 명령의'작은 이름'으로 삼을 수 있지만, 이렇게 하는 것이 무슨 의미가 있습니까? 이때 별명이 작용할 수 있다.vim 명령의 별명을vi라고 정의하면 이후에 실행된vi 명령은 실제로vim 명령을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.