SHELL 프로 그래 밍 (3) sed 와 awk 의 용법
10730 단어 shell
1.sed
1.1 sed 의 역할
sed 는 strea editor 의 약칭 으로 온라인 편집기 입 니 다. 한 줄 의 내용 을 처리 할 때마다 현재 처 리 된 줄 을 모드 공간 (버퍼) 에 저장 합 니 다. 이 어 sed 명령 으로 버퍼 의 내용 을 처리 하고 처리 한 후에 버퍼 의 내용 을 화면 으로 보 내 고 다음 줄 을 처리 합 니 다. 이렇게 파일 이 끝 날 때 까지 계속 반복 합 니 다.파일 의 내용 이 변경 되 지 않 았 습 니 다. 저장 소 로 출력 하지 않 는 한 변경 되 지 않 았 습 니 다.
sed 는 주로 하나 이상 의 파일 을 자동 으로 편집 하고 파일 에 대한 반복 작업 을 간소화 합 니 다.
문법:
sed [options] '[command]' [filename]
options: - n: 다음 줄 읽 기 - e: 여러 sed 명령 실행 - f: 실행 스 크 립 트 - i: 파일 내용 편집 - i. bak: 편집 과 동시에. bake 의 백업 - r: 확장 정규 표현 식 사용
command: a: 뒤에 i 추가: 일치 한 후에 p 삽입: 인쇄 d: r/R 삭제: 파일 읽 기, 한 줄 읽 기 w: 다른 저장 s: 찾기 c: 대체 h/H: 복사/추가 버퍼 에서 저장 공간 g/G: 저장 공간 에서 가 져 오기/추가 버퍼 x: 두 공간 내용 교환 n/N: 복사,현재 D 에 다음 줄 추가: 이전 내용 삭제 P: 인쇄 전 내용 b: 무조건 점프 t: 일치 하 는 점프 T 만족: 일치 하지 않 을 때 점프
1.2 파일 의 n 번 째 줄 보이 기
sed -n "np" filename #n
예 를 들 어 file. txt 의 세 번 째 줄 을 표시 합 니 다.
sed -n "3p" file.txt
1.3 파일 앞 n 줄 보이 기
sed -n "1,np" filename
예 를 들 어 file. txt 의 앞 세 줄 을 표시 합 니 다.
sed -n "1,3p" file.txt
1.3 이전 n 줄 이외 의 내용 표시
sed -n '1,n! p' filename
예 를 들 어 file. txt 에서 앞의 세 줄 을 제외 한 의외 의 내용 을 표시 합 니 다.
sed -n "1,3! p" file.txt
1.4 파일 n 번 째 줄 과 그 다음 m 줄 보이 기
sed -n "n,-mp" filename
예 를 들 어 파일 의 세 번 째 줄 과 세 번 째 줄 뒤의 네 줄 을 표시 합 니 다.
sed -n "3,+4p" file.txt
1.5 n 번 째 줄 앞 에 내용 삽입
명령:
sed "n i content " filename
예 를 들 어 file. txt 의 세 번 째 줄 에 문자열 'abc' 를 삽입 합 니 다.
sed "3 i abc" file.txt
1.6 파일 의 n 번 째 줄 바 꾸 기
명령:
sed 'n c content' filename
예 를 들 어 파일 의 세 번 째 줄 을 abc 로 바 꿉 니 다.
sed '3 c abc' file.txt
1.7 파일 의 마지막 줄 에 삽입
sed "$ a content" filename
예 를 들 어 file. txt 의 마지막 줄 에 문자열 'abc' 를 삽입 합 니 다.
sed " $ a abc " file.txt
1.8 복사 붙 여 넣 기
예 를 들 어 파일 의 두 번 째 줄 에서 네 번 째 줄 로 복사 하여 파일 의 열 번 째 줄 에 붙 여 넣 습 니 다.
sed "2,4H; 10G" file.txt
파일 의 두 번 째 줄 에서 네 번 째 줄 로 복사 하여 파일 끝 에 붙 여 넣 기:
sed "2,4H; $G" file.txt
1.9 빈 줄 삭제
sed '/^$/d' a.txt > b.txt
1.10 찾기 및 저장
특정 문 자 를 포함 하 는 줄 을 찾 아 저장 합 니 다. 예 를 들 어 '5' 가 있 는 줄 을 찾 아 new. txt 에 저장 합 니 다.
sed '/5/ w new.txt' file.txt
1.11 파일 재 설정
sed 는 파일 의 내용 을 바 꾸 지 않 습 니 다. 편집 한 내용 을 유지 하려 면 방향 을 바 꾸 십시오.예 를 들 어 file. txt 의 세 번 째 줄 과 세 번 째 줄 뒤의 네 줄 을 인쇄 하고 a. txt 에 출력 합 니 다.
sed -n '3,+4p' file.txt >a.txt
2.awk
2.1 소개
awk 는 우수한 텍스트 처리 도구 로 Linux 및 Unix 환경 에서 기능 이 가장 강 한 데이터 처리 엔진 중 하나 입 니 다.그 기능 은 한 사람 이 가 진 지식 에 달 려 있다.
awk 의 문 구 는 모두 패턴 과 동작 으로 구성 되 어 있 으 며, 하나의 awk 스 크 립 트 는 여러 개의 문 구 를 가 질 수 있 으 며, 패턴 은 동작 문장의 트리거 조건 과 트리거 시간 을 결정 합 니 다.
특수 필드;BEGIN 문 구 는 머리 정 보 를 계산 하고 인쇄 하 며 모든 동작 전에 진행 합 니 다.END 문 구 는 출력 결 과 를 집계 하고 동작 후에 실행 합 니 다.기본 구분자 가 빈 칸 이 고 - F 를 사용 하여 다른 구분자 로 바 꿀 수도 있 습 니 다. 예 를 들 어 콜론 분할: - F:
2.2 사용자 정의 디 스 플레이 연월일
[root@iz2zeisjfk2rw89yhp3g19z shtest]# date
Tue May 1 18:42:41 CST 2018
[root@iz2zeisjfk2rw89yhp3g19z shtest]# date | awk '{print "Year:"$6 "\t Month:"$2 "\tday:" $3}'
Year:2018 Month:May day:1
2.3 awk 파일 작업
다음 내용 을 result. txt 에 기록 합 니 다:
andy 4 85 92 78 94 88
bob 6 89 90 75 90 86
claire 9 84 88 80 92 84
dave 5 94 52 84 86 NA
$0
모든 내용 을 표시 합 니 다. $1
첫 번 째 열 을 표시 합 니 다.[root@iz2zeisjfk2rw89yhp3g19z shtest]# awk '{print $0}' result.txt
andy 4 85 92 78 94 88
bob 6 89 90 75 90 86
claire 9 84 88 80 92 84
dave 5 94 52 84 86 NA
[root@iz2zeisjfk2rw89yhp3g19z shtest]# awk '{print $1}' result.txt
andy
bob
claire
dave
result. txt 의 첫 번 째 열 과 세 번 째 열 을 표시 합 니 다.
awk '{print $1,$3}' result.txt
파일 헤더 와 파일 끝 인쇄:
awk 'BEGIN{print "name level result"}{print $1,$2,$3} END{print "end of the file"}' result.txt
결과:
[root@iz2zeisjfk2rw89yhp3g19z shtest]# awk '$2 >= 5' result.txt
bob 6 89 90 75 90 86
claire 9 84 88 80 92 84
dave 5 94 52 84 86 NA
콜론 을 구분자 로 하여/etc/passwd 의 첫 번 째 열 을 인쇄 합 니 다.
awk -F":" '{ print $1 }' /etc/passwd
2.4 여러 조건 판단
또는 조건:
awk '{if($1=="andy" || $2=="9") print $0}' result.txt
조건:
awk '{if($1=="andy" && $2=="9") print $0}' result.txt
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.