linux 텍스트 처리 삼 총사 grep sed awk 실전
8383 단어 shell
grep 는 특정 문자열 을 포함 하 는 줄 을 찾 는 데 사 용 됩 니 다.
sed, awk 는 텍스트 를 처리 하 는 데 사 용 됩 니 다.
awk 에서 C 문법 을 지원 하고 분기 조건 판단, 순환 문 등 이 있 으 며 소형 프로 그래 밍 언어 와 상당 합 니 다.
grep
1. 단일 일치 조회
grep -e "zhang" score.txt
2. 여러 개의 일치
grep -e "zhang" -e "li" score.txt
3. grep 결합 sed 추출 문자열
추출 문자열 은 자주 사용 되 는 작업 입 니 다. grep 의 정규 표현 식 은 그룹 작업 을 지원 하지 않 기 때문에 sed 와 결합 하여 문자열 추출 을 해 야 합 니 다.
grep 특정 줄 확인, sed 양쪽 삭제.
3.1 이 컴퓨터 ip 주소 추출
# 1.
ifconfig eth0 | grep "inet addr" # : inet addr:192.168.100.201 Bcast:192.168.100.255 Mask:255.255.255.0
# 2.
ifconfig eth0 | grep 'inet addr:' | sed -e 's/^.*addr://' | sed -e 's/ *Bcast.*$//' # 192.168.100.201
3.2 이미지 주소 추출
echo "background-image: url(/media/images/index/im2.jpg);"| sed -e 's/^.*url(//' | sed -e 's/).*$//'
# /media/images/index/im2.jpg
사용 가능: grep - o
- o: 일치 하 는 부분 만 표시 (grep 기본 줄 표시)
echo "background-image: url(/media/images/index/im2.jpg);"| grep -o '/.*jpg'
# /media/images/index/im2.jpg
sed
sed 도 검색 에 사용 할 수 있 지만 필터 와 교체 등 간단 한 텍스트 편집 에 사 용 됩 니 다.
명령 하 다.
속뜻
sed [OPTON] 대상 파일
대상 파일 을 필터 하거나 교체 합 니 다.
선택 가능 한 매개 변수
옵션 가능
속뜻
p
인쇄 하 다.
d
삭제
I
대소 문자 무시
$
대표 님 마지막 줄.
-n
처리 후 결과 만 표시
-e
표현 식 에 따라 처리 하 다
1. 특정 범위 의 줄 인쇄
head - n 은 앞 n 줄 을 출력 할 수 있 지만 특정 범위 의 줄 을 출력 할 수 없습니다.
sed -ne '3,5p' 2.txt # 3~5
2. 루트 를 포함 하 는 줄 을 표시 하고 루트 는 대소 문 자 를 구분 하지 않 습 니 다.
sed -ne '/root/Ip' 2.txt
3. 줄 삭제
sed -e '4, $d' 2.txt # 4 1 ,
4. 삽입, 추가, 줄 바 꾸 기
원본 파일 수정 안 함
매개 변수
속뜻
ni
n 줄 앞 에 줄 삽입
na
n 번 째 줄 뒤에 추가 줄
nc
n 줄 바 꾸 기
sed -e '1i iiiiii' 2.txt
sed -e '2a aaaaaa' 2.txt
sed -e '3c cccccc' 2.txt
5. 문자열 바 꾸 기
원본 파일 수정 안 함
매개 변수
속뜻
s/oldString/newString/
바꾸다
6. 문자열 바 꾸 기 (원본 파일 수정)
매개 변수 i 대표 원본 파일 내용 교체 추가
#
cp 1.txt 2.txt_bak
#
sed -ie 's/nologin/login/' 2.txt
awk
awk
를 통 해 모호 한 조 회 를 실현 할 수 있 고 필요 한 추출 필드 에 따라 판단 과 간단 한 연산 도 할 수 있다.1. 퍼 지 조회
grep 는 하나의 정규 표현 식 을 통 해 여러 모드 와 일치 할 수 없 으 며, awk 는 가능 합 니 다.
명령 하 다.
속뜻
awk ‘/zhang|li/’ score.txt
zhang 이나 li 가 함 유 된 줄 검색
#
[root@node01 export]# cat score.txt
zhangsan 68 99 26
lisi 98 66 96
wangwu 38 33 86
zhaoliu 78 44 36
maq 88 22 66
zhouba 98 44 46
# zhang li
[root@node01 export]# cat score.txt | awk '/zhang|li/'
zhangsan 68 99 26
lisi 98 66 96
zhaoliu 78 44 36
2. 구분자 지정, 아래 표 시 된 내용 에 따라 표시
grep 는 일반적으로 한 줄 을 표시 하 는 데 사용 되 지만, awk 는 줄 을 각 필드 로 나 눌 수 있 으 며, 필드 에 내용 을 표시 할 수 있 습 니 다.
명령 하 다.
속뜻
awk -F ‘,’ ‘{prnt $1, $2, $3}’
줄 을 쉼표 로 나 눈 후 1, 2, 3 번 필드 를 인쇄 합 니 다 ($0 은 줄 전 체 를 대표 합 니 다)
cat score.txt
zhangsan 68 99 26
lisi 98 66 96
wangwu 38 33 86
zhaoliu 78 44 36
maq 88 22 66
zhouba 98 44 46
cat score.txt | awk -F ' ' '{print $1,$2}'
zhangsan 68
lisi 98
wangwu 38
zhaoliu 78
maq 88
zhouba 98
3. 인쇄 할 구분자 지정
명령 하 다.
속뜻
awk -F ’ ’ ‘{OFS="\t"}{print $1, $2, $3}’ 1.txt
1. txt 의 내용 을 빈 칸 으로 나 눈 후 탭 문 자 를 분할 문자 로 인쇄 합 니 다.
OFS 옵션
옵션 OFS =
분할 부호
문자
문자
\b
스페이스 바
\f
페이지 를 바꾸다
줄 을 바꾸다
\r
리 턴 카
\t
탭 문자
4. 줄 용 awk 함수
명령 하 다.
속뜻
awk -F ‘,’ ‘{print toupper($2)}’ 1.txt
1. txt 에서 줄 마다 첫 번 째 필드 를 크기 로 변환 한 후 인쇄 합 니 다.
5. if 구문
명령 하 다.
속뜻
awk -F ‘{if($4>60) print $1, $4}’
필드 4 가 60 이상 이면 인쇄 합 니 다.
awk - F '{if ($4 > 60} print $1, "합격"; else print $1, "불합격"}
필드 4 가 60 이상 이면 인쇄 에 합격 합 니 다. 그렇지 않 으 면 인쇄 에 합격 하지 못 합 니 다.
기타 매개 변수
매개 변수
속뜻
if($0 ~ “aa”) print $0
이 줄 에 "aa"가 포함 되 어 있다 면 인쇄 합 니 다.
if($1 ~ “aa”) print $0
첫 번 째 필드 에 "aa"가 포함 되 어 있 으 면 인쇄 합 니 다.
if($1 == “aa”) print $0
첫 번 째 필드 가 "aa"와 같 으 면 인쇄 합 니 다.
if 약자 도 생략 할 수 있 습 니 다.
awk -F ' ' '$4>60 {print $0}' score.txt
6. BEGIN END 필드 평균 값 구하 기
명령 하 다.
속뜻
awk 'BEGIN {초기 화 작업} {줄 당 작업} END {끝 날 때 작업}' 파일 이름
초기 화 작업 을 먼저 실행 하고 줄 마다 작업 을 수행 하 며 마지막 으로 끝 날 때 작업 을 수행 합 니 다.
awk -F ' ' 'BEGIN{}{total = total + $4} END {print "ave: " (total / NR)}' score.txt
# : ave: 59.3333
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.