목차
하나, 정규 표현식
1. 기본 규칙
txt | grep -n 'wo\{2,5\}d' 고양이 test.txt | grep -n 'wo\{2,\}d'
2. 확장된 정규화
a) +, 이전 문자 중 하나 이상 반복
cat test.txt | grep -nE 'wo+d' 또는
cat test.txt | egrep -n 'wo+d'
b) ?, 0 또는 이전 문자 중 하나 문자
cat test.txt | egrep -n 'bes?t'
c)|, 여러 문자를 찾으려면 또는 사용
cat test.txt | egrep -n 'of|is|on'
d) (), 그룹 문자 찾기 String
cat test .txt | egrep -n 't(a|e)st'
e)()+, 여러 반복 그룹 식별
cat test.txt | egrep -n 'A(xyz)+C'
3. 일반적인 정규식
3.1 숫자
"^[0-9]*[1-9][0-9]*$" //양의 정수
"^((-\d+)|(0+))$" //양이 아닌 정수 ( 음의 정수 + 0)
"^-[0-9]*[1-9][0-9]*$" // 음의 정수
"^-?\d+$" // 정수
"^\d+(\.\ d+ )?$" //음수가 아닌 부동 소수점 수(양의 부동 소수점 수 + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]* )|([ 0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)) $” // 양의 부동 소수점 수
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" // 양이 아닌 부동 소수점 수(음의 부동 소수점) 숫자 + 0) "^(
- ?\d+)(\.\d+)?$” // 부동 소수점 숫자
3.2 문자열
"^[AZ]+$" //26개의 영문 대문자로 구성된 문자열
"^[az]+$" //26개의 영문 소문자로 구성된 문자열
"^[A- Za-z0-9]+ $” //숫자와 영문 26자로 구성된 문자열
“^\w+$” //숫자, 영문 26자 또는 밑줄로 구성된 문자열
3.3이메일
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //이메일 주소 "^([
w -.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-] +.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$” //이메일
3.4Url
“^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$” //URL
3.5IP
“^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[ 0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d| 25[0-5])$” //IP 위치
3.6Tel
/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-)) ?([0-9]{7,8})(\-[0-9]+)?$/ //전화번호
3.7 날짜 확인
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1- 9]{1}))|(3[0|1]))$/ // 연-월-일 yyyy-MM-dd / yy-MM-dd 형식 "^[0-9]{4}-
( (0([1-9]{1}))|(1[1|2]))-(([0-2]([0-9]{1}))|(3[0|1] ))$" // 연-월-일 yyyy-MM-dd 형식
/^((0([1-9]{1}))|(1[1|2]))/(([0-2 ]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 월/일/년
2. 파일 조작 사총사
1, 고급 그렙
옵션
-r 지정된 디렉터리의 모든 파일을 재귀적으로 검색합니다.
-l 파일 내용이 아닌 지정된 키워드와 일치하는 파일 이름만 표시합니다.
사례
보기 /etc 디렉터리에서 bash를 포함하는 모든 파일 이름을 봅니다.
grep -rl bash /etc
2.egrep
정규식에 대한 완벽한 지원
3, 고급 찾기
3.1 권한으로 검색 -perm
3.2 타임스탬프로 검색
-atime
-mtime
-ctime
3.4 -exec
find /var/spool/mail -type f -exec rm -rf {} \;
3.5 xargs
find /var/spool/mail -type f | xargs rm -rf
4, sed
4.1 구문
sed [옵션] '작업' 매개변수
sed [옵션] -f 스크립트파일 매개변수
4.2 옵션
-e: 지정된 명령어나 스크립트로 처리함을 나타냅니다
. -f: 스크립트 파일을 지정합니다.
-h: 도움말
-n: 처리된 결과만 표시함을 나타냅니다
. -i: 텍스트 파일을 직접 편집합니다
. -r: 확장 일반 지원
4.3 작동
a: 추가, 현재 행 아래 행에 지정된 내용 추가
c: 바꾸기, 선택한 행 바꾸기
d: 삭제, 지정된 행 삭제
i: 삽입, 선택한 행 위에 행 삽입
p: 인쇄
s: 바꾸기, 바꾸기 지정된 행 문자
y: 문자 변환
5,아크
5.1 구문
awk 옵션 '패턴 또는 조건 {편집 명령}' file1 file2 ...
awk -f 스크립트 파일 file1 file2 ...
5.2 옵션
-F는 각 줄의 구분 기호를 지정하며
기본 구분 기호는 공백입니다.
5.3 내장 변수
FS: 각 라인의 구분 기호 지정
NF: 현재 처리 라인의 필드 수 지정
NR: 현재 처리 라인의 라인 번호
$0: 현재 처리 라인의 전체 라인 내용
$n: 현재 처리 라인의 n번째 필드 처리 중
FILENAME: 처리 중인 파일 이름
RS: 데이터 레코드 구분 기호, 기본값은 \n
5.4 사례
a) awk '{print}' test.txt를 cat awk 'NR>=1&&NR<=3{print}' test.txt awk 'NR==1,NR==3{print}' test와 #
동등한 줄로 출력합니다. .txt #1~3줄 인쇄 awk 'NR%2==0{print}' test.txt #짝수 줄 인쇄 b) 세그먼트별 출력은 기본적으로 "space" 세그먼트로 출력됩니다! ifconfig ens33 |awk '/netmask/{print $2}' #filter IP 주소 cat /etc/shadow | awk -F : '$2=="!!"{print $1}' # 시스템에 로그인할 수 없는 사용자를 인쇄합니다. c) 쉘 명령 호출 cat /etc/passwd | awk -F : '/bash$/{print | "wc -l"}' /etc/passwd #시스템에 로그인할 수 있는 사용자 수 통계