셸 스 크 립 트 잡기 (3)
1. 우 리 는 먼저 정규 표현 식 의 문자 적 의미 에 대한 기 초 를 익 힌 다.
^ 줄 시작 표시
$줄 끝 표시
임의의 문자 일치
[] 는 [] 에 포 함 된 임의의 문자 와 일치 합 니 다.
[^] 는 [^ 문자] 를 제외 한 임의의 문자 9 [^ 01] 와 일치 합 니 다. 92, 93 은 90, 91 과 일치 하지 않 습 니 다.
[-] 지정 한 범위 내의 문자 와 일치 합 니 다. [1 - 8] 1 - 8 안의 임의의 문자 와 일치 합 니 다.
?0 회 혹은 1 회 일치
+ 1 회 혹은 여러 번 일치
* 0 회 혹은 여러 번 일치
() 일치 하 는 문자열 만 들 기
{n} 일치 n 회
{n,} 최소 n 회
{n, m} n 과 m 사이
| 또는 관계 의 일치 ba (r | t) 는 bar 와 bat 를 일치 시 킬 수 있 습 니 다.
\전의 문자 a\. b 일치 a. b
2, grep 명령 사용 방법:
grep pattern filename 단일 파일
grep pattern file1 file2 file3 ... 여러 파일
egrep "[a - z] +"file 확장의 정규
egrep - o "[a - z]"는 일치 하 는 부분 만 출력 합 니 다.
grep - v pattern file 일치 결과 반전
grep - c patter 파일 일치 줄 수
다단 계 디 렉 터 리 에서 파일 검색:
grep "text". -R -n
대소 문자 무시
grep -i "helloW"
여러 스타일 일치
grep -e "this" -e "key"-o
검색 에서 파일 을 제외 하거나 지정 합 니 다.
grep "main". -r --include *.{c,cpp}
grep "main". -r --exclude *.{c,cpp}
일치 하 는 줄 인쇄:
[root@ganglia 916]# seq 10 | grep 5 -A 2
5
6
7
[root@ganglia 916]#
일치 하 는 결과 앞 두 줄
[root@ganglia 916]# seq 10 | grep 5 -B 2
3
4
5
[root@ganglia 916]#
일치 하 는 결과 앞 뒤 두 줄
[root@ganglia 916]# seq 10 | grep 5 -C 2
3
4
5
6
7
[root@ganglia 916]#
3. cut 명령 을 사용 합 니 다. cut 명령 은 파일 을 나 누 는 데 사 용 됩 니 다. 열 에 따라 쉽게 나 눌 수 있 습 니 다.
1, 특정 문자 cut - f filed 추출list filename
cut - f 2, 3 filename
[root@ganglia 916]# cut -f1 -d" " a.txt
name
zhang
wang
li
[root@ganglia 916]#
- d 뒤에 지정 한 경계 부호
- f 뒤에 여러 개의 숫자 를 쉼표 로 구분
[root@ganglia 916]# cut -f1,3 -d" " a.txt
name score
zhang 100
wang 99
li 96
[root@ganglia 916]# cat a.txt
name mark score
zhang 20 100
wang 36 99
li 12 96
[root@ganglia 916]#
기타 용법:
N - N 번 째 바이트, 문자 또는 필드 에서 줄 끝까지
N - M. N 번 째 바이트 부터 M 번 째 바이트 까지.
- M 첫 번 째 바이트 부터 M 번 째 바이트 까지
바이트
- c 표시 문자
- f 정의 필드 에 사용
인쇄 전 5 글자:
[root@ganglia 916]# cat b.txt
aafgdfdfdfdsfd
dffdsfag12343r3
fdfdfdgfgfgf
dfdgdtrasf
zzzzzzzz
ddfdfggdfdf
[root@ganglia 916]# cut -c1-5 b.txt
aafgd
dffds
fdfdf
dfdgd
zzzzz
ddfdf
[root@ganglia 916]#
인쇄 전 두 글자:
[root@ganglia 916]# cut b.txt -c -2
aa
df
fd
df
zz
dd
[root@ganglia 916]#
여러 필드 출력 추출:
[root@ganglia 916]# cut b.txt -c1-3,4-6 --output-delimiter "====>"
aaf====>gdf
dff====>dsf
fdf====>dfd
dfd====>gdt
zzz====>zzz
ddf====>dfg
[root@ganglia 916]#
4, sed 명령 사용
명령 sed 's/pattern/replace/' 파일 바 꾸 기
원본 텍스트 sed - i 's/pattern/replace/' 파일 바 꾸 기
모든 디 렉 터 리 sed - i 's/pattern/replace/g' 파일 교체
공백 줄 sed '/^ $/d' 파일 제거
일치 하 는 문자열 표시 가 있 습 니 다. 이 기능 은 하 이 라이트 가 가장 적 용 됩 니 다.
[root@ganglia 916]# echo "i am a red cat" | sed 's/red/\&\"/g'
i am a red " cat
[root@ganglia 916]# echo "i am a red cat" | sed 's/red/"&"/g'
i am a "red" cat
[root@ganglia 916]#
: sed -e "pattern1" -e "pattern2"
shell sed ,
[root@ganglia 916]# text=hello
[root@ganglia 916]# echo hello world | sed "s/$text/big/"
big world
[root@ganglia 916]#
5, awk 프로 그래 밍 사용
기본 문법: awk 'BEGIN {print "start"} pattern {commons} END {print "end"} ' files
awk 스 크 립 트 를 주의 하 십시오. 작은 따옴표 로 묶 을 수도 있 습 니 다.
다음 예:
awk "BEGIN {i=0} {i++} END {print i}"filename [root@ganglia 916]# echo -e "1
2
3" | gawk 'BEGIN {print " " } {print} END {print " "} '
1
2
3
[root@ganglia 916]#
두 가 지 를 기억 해 야 합 니 다. print 인쇄 의 매개 변 수 는 쉼표 로 나 뉘 어 있 습 니 다. 기본 빈 칸 은 고정 부호 인 더 블 따옴표 로 조합 기호 로 사 용 됩 니 다.
NR 기록 수량, 현재 줄 번호 에 해당
NF 필드 수, 실행 중 현재 필드 수
$0 원본 내용
$n 제 n 열[root@ganglia 916]# cat a.txt
name mark score
zhang 20 100
wang 36 99
li 12 96
[root@ganglia 916]# gawk '{ print $1, $3}' a.txt
name score
zhang 100
wang 99
li 96
[root@ganglia 916]#
줄 번호 인쇄, 줄 수 통계[root@ganglia 916]# gawk '{ print NR }' a.txt
1
2
3
4
한 줄 읽 기 getline 사용 하기[root@ganglia 916]# seq 6 | gawk 'BEGIN {getline; print " :" $0} {print $0}'
:1
2
3
4
5
6
[root@ganglia 916]#
이 예 는 헤더 가 있 는 엑셀 이나 일부 텍스트 데 이 터 를 읽 는 데 매우 편리 합 니 다.
awk 의 유연 한 여과 조건
awk 'NR < 5' 줄 번호 5 이하 줄
awk 'NR = = 1, NR = = 4' 줄 번호 가 1 에서 5 사이 인 줄
awk '/linux/' linux 줄 포함
awk '!/linux/'linux 줄 포함 하지 않 음
필드 정의 문자 설정:
awk -F: '{ print $NF}'/etc/passwd
awk 지원 순환:[root@ganglia 916]# gawk 'BEGIN{ for (i=0;i<=10;i++){ print i } }'
0
1
2
3
4
5
6
7
8
9
10
[root@ganglia 916]#
저희 가 배 운 C 와 JAVA, JavaScrpit 과 굉장히 가 깝 습 니 다.
awk 내장 함수
length () 문자열 길이
index () 출현 위치 되 돌리 기
split () 배열 해산
substr () 문자열 캡 처
sub () 교체
match () 일치
6. 열 에 따라 여러 파일 을 병합 합 니 다.[root@ganglia 916]# cat c.txt
1
2
3
4
[root@ganglia 916]# cat d.txt
a
b
c
d
e
[root@ganglia 916]# pas
passwd paste
[root@ganglia 916]# pas
passwd paste
[root@ganglia 916]# paste c.txt d.txt
1 a
2 b
3 c
4 d
e
[root@ganglia 916]#
지정 한 분할 문자:[root@ganglia 916]# paste c.txt d.txt -d ","
1,a
2,b
3,c
4,d
,e
[root@ganglia 916]#
지정 한 범위 문자 캡 처[root@ganglia 916]# seq 100 | gawk 'NR==4,NR==10'
4
5
6
7
8
9
10
[root@ganglia 916]#
역순 출력 tac[root@ganglia 916]# seq 5 | tac
5
4
3
2
1
[root@ganglia 916]#
역순 출력 awk[root@ganglia 916]# seq 5 | gawk '{ lifo[NR]=$0 } END{ for(lno=NR;lno>-1;lno--){print lifo[lno]} } '
5
4
3
2
1
[root@ganglia 916]#
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.