Linux 텍스트 처리 삼 총사 (grep, sed, awk) 및 정규 표현 식 (하)
4497 단어 Linux
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바이너리 파일cat 또는tail, 터미널 디코딩 시 처리 방법cat으로 바이너리 파일을 보려고 할 때 코드가 엉망이 되어 식은땀이 났다. 웹에서 스크롤된 정보의 처리 방법과alias의 설정을 요약합니다. reset 명령을 사용하여 터미널을 재설정합니다.이렇게 하면 고치지 못하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.