Linux 텍스트 처리 삼 총사 (grep, sed, awk) 및 정규 표현 식 (하)

4497 단어 Linux
3.2 삼 총사 sed
sed 는 스 트림 편집기 입 니 다. 대화 형 스 트림 편집기 가 아 닙 니 다. 매번 한 줄 의 내용 만 처리 하고 처리 할 때 현재 처 리 된 줄 을 임시 버퍼 에 저장 하여 '모드 공간' 이 라 고 부 릅 니 다. 이 어 sed 명령 으로 버퍼 의 내용 을 처리 하고 처리 가 끝 난 후에 버퍼 의 내용 을 화면 으로 보 냅 니 다.이 어 다음 줄 을 처리 하고 파일 이 끝 날 때 까지 계속 반복 처리 합 니 다.용법: sed [OPTION].(substitute) s / / g, s \ # \ # g, s @ @ g g 는 줄 내 전역 교체 s / / gi: 대소 문 자 를 무시 합 니 다.s / / & g - --- --- &: 줄 뒤에 지정 한 내용 을 추가 합 니 다. c: 일반적인 옵션 매개 변 수 를 바 꿉 니 다. w: 일치 하 는 줄 을 지정 한 파일 로 기록 합 니 다. - r: 확장 정규 표현 식 지원 - e: 여러 편집 허용 - i: 원본 파일 직접 편집 - n: 침묵 출력 취소.일치 하 는 줄 만 표시 합 니 다: - ni 옵션 을 사용 하면 파일 내용 을 비 웁 니 다.
//       add
[root@localhost ~]# sed '1aadd' test2.txt
//        add
[root@localhost ~]# sed ' $ aadd' test2.txt
//        
[root@localhost ~]# sed '$aadd
nidaye' test2.txt // A B C D [root@localhost ~]# sed -e'/A/aB' -e '/C/aD' test.txt

삭제:
//   3    
[root@localhost ~]# sed '3d' test.txt 
//   3 7    
[root@localhost ~]# sed '3,7d' test.txt 
//   sb  
[root@localhost ~]# sed '/sb/d' test.txt 
//    3   5 
[root@localhost ~]# sed '3d;5d' test.txt 
//    
[root@localhost ~]# sed '/^$/d' test.txt
//  sb  
[root@localhost ~]# sed 's/sb//g' test.txt 

검사:
//          
[root@localhost ~]# sed -n '1!p' test2.txt
//  1 3    
[root@localhost ~]# sed -n '1,3p' test2.txt 
//   A  B  
[root@localhost ~]# sed -n '/A/p;/B/p' test.txt 
//  IP  【    (        )】
[root@localhost ~]# ip a s ens33|sed -n '3p'|sed -r 's#^.*net(.*)#\1#g'|sed -r 's#(.*)/24.*#\1#g'
[root@localhost ~]# ip a s ens33|sed -n '3p'|sed -r 's#^.*net (.*)/24.*#\1#g'
[root@localhost ~]# ip a s ens33|sed -nr '3s#^.*net (.*)/24.*#\1#gp'

변경:
//       
[root@localhost ~]# sed '7c SELINUX=Disabled' /etc/selinux/config 
//men  man
[root@localhost ~]# sed 's/men/man/g' test.txt 
//          (             test.txt.bak   )
[root@localhost ~]# sed -ri.bak 's/dilireba/nidaye/g' test.txt
//       
[root@localhost tet]# ls bab*.txt|sed -r 's/(.*)txt/& \1jpg/g'
bab0.txt bab0.jpg

3.3 삼 총사 의 awk
awk 는 Linux / Unix 에서 텍스트 와 데 이 터 를 처리 하 는 프로 그래 밍 언어 입 니 다. 데 이 터 는 표준 입력, 하나 이상 의 파일 또는 다른 명령 의 출력 에서 나 올 수 있 습 니 다. 스 크 립 트 에 맞 춰 사용 되 며 강력 한 텍스트 처리 도구 입 니 다.awk 처리 데 이 터 는 한 줄 한 줄 씩 파일 을 스 캔 하고 첫 줄 에서 마지막 줄 까지 일치 하 는 특정 모드 의 줄 을 찾 아 줄 에서 작업 합 니 다. 처리 동작 이 지정 되 지 않 으 면 일치 하 는 줄 을 표준 출력 으로 표시 합 니 다.지정 한 모드 가 없 으 면 모든 작업 의 줄 이 처 리 됩 니 다.용법: awk [매개 변수] '[!] 모드 - 동작' 파일 상용 옵션: - F: 필드 구분자 지정 - v: 사용자 정의 변수 내장 변수: NF: 필드 총 수량, $NF 는 마지막 필드 NR: 줄 FS: 줄 필드 구분자 입력 $(NF - n): 마지막 몇 번 째 열 모드 일치 부호 제거: ~: 일치!:일치 하지 않 음
//   2    
[root@localhost ~]# awk 'NR==2' test.txt
//   2  4    
[root@localhost ~]# awk 'NR==2,NR==4' test.tx
//    2  4    
[root@localhost ~]# awk 'NR==2;NR==4' test.txt
//-------------------   BB  
[root@localhost ~]# awk '/BB/{print $2$3}' test.txt 
546345:325423534:324:213  //    
[root@localhost ~]# awk '/BB/{print $2,$3}' test.txt   //         
546345 :325423534:324:213
[root@localhost ~]# awk '/BB/{print $2","$3}' test.txt //     
546345,:325423534:324:213
[root@localhost ~]# awk '/BB/{print $2','$3}' test.txt //   
546345 :325423534:324:213
//-----------------------------     1
[root@localhost ~]# awk -F"[ :]+" '{print $5-1}' test.txt 
 23441
 63455
[root@localhost ~]# awk -F"[ :]+" '{print $(5-1)}' test.txt  //     2 
34242
435345
[root@localhost ~]# 
//    3  123    
[root@localhost ~]# awk '$3~/^123/{print $1,$2,$3}' test.txt
// 3    1 5    
[root@localhost ~]# awk '$3~/(1|5)$/{print $1,$2,$3}' test.txt 
3dilireba sad 2353571235
4jxj sada 123546345
[root@localhost ~]# awk '$3~/[15]$/{print $1,$2,$3}' test.txt 
3dilireba sad 2353571235
4jxj sada 123546345
[root@localhost ~]# awk '$3~/[15]$/{print $1,$2}' test.txt // $3       3  
3dilireba sad
4jxj sada
//       :   _
[root@localhost ~]# awk '$1~/jxj/{gsub(/:/,"_",$NF);print $NF}' test.txt
//    
[root@localhost ~]# awk '/^$/{i++;print i}' /etc/services
[root@localhost ~]# awk '/^$/{i++}END{print i}' /etc/services
//        
[root@localhost ~]# awk '$NF~/\/bin\/bash/{i++}END{print i}' /etc/passwd

좋은 웹페이지 즐겨찾기