sed 와 awk 입문 (1)
sed
sed 자 체 는 파이프 명령 으로 standard input 를 분석 할 수 있 으 며 sed 는 데 이 터 를 교체, 삭제, 추가, 특정 줄 선택 등 기능 sed [- nefr] [동작] - n 조용 한 모드 를 사용 할 수 있 습 니 다. 일반 sed 용법 에서 stdin 에서 온 모든 데 이 터 는 화면 에 표시 되 지만 n 인 자 를 추가 하면...sed 특수 처 리 를 거 쳐 야만 열 거 됩 니 다. - e 명령 행 모드 에서 sed 를 직접 하 는 동작 편집 - f 는 sed 의 동작 을 한 파일 에 직접 쓰 고 - f filename 은 filename 의 sed 동작 - r sed 를 수행 할 수 있 습 니 다. 확장 문법 (기본 정규 표현 식) - i 는 화면 출력 이 아 닌 읽 은 파일 내용 을 직접 수정 합 니 다.
동작 설명: [n1 [, n2] function n1, n2 가 반드시 존재 하 는 것 은 아 닙 니 다. 일반적으로 동작 을 하 는 줄 수 를 선택 합 니 다.
function 에는 다음 과 같은 인자 가 있 습 니 다. a 가 추가 되 었 습 니 다. a 의 뒤 에는 문자열 을 연결 할 수 있 습 니 다. 이 문자열 들 은 새로운 줄 에 c 교체 가 나타 납 니 다. c 의 뒤 에는 문자열 을 연결 할 수 있 습 니 다. 이 문자열 들 은 n1, n2 사이 의 줄 d 를 교체 하여 삭제 할 수 있 습 니 다. 뒤 에는 인자 i 삽입 이 필요 없습니다. i 의 뒤 에는 문자열 p 를 연결 하여 인쇄 할 수 있 습 니 다. 선택 한 데 이 터 를 s 로 인쇄 할 수 있 습 니 다.직접 바 꿀 수 있 는 작업 입 니 다. 보통 s 동작 은 정규 표현 식 과 어 울 릴 수 있 습 니 다.
행동 단위 의 추가 / 삭제 기능
nl /etc/passwd | sed '2,25d'
1 root:x:0:0:root:/root:/bin/bash
26 tomcat:x:999:998::/home/tomcat:
nl /etc/passwd | sed '2a drink tea'
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
drink tea
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
5 sync:x:4:65534:sync:/bin:/bin/sync
( ...)
행동 단위 의 교체 및 표시 기능
nl /etc/passwd | sed '2,5c new line'
1 root:x:0:0:root:/root:/bin/bash
new line
6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
( ...)
sed 's / 바 꿀 내용 / 새로운 문자열 / g'
cat /etc/man.config | grep 'MAN' | sed 's/#.*$//g' | sed '/^$/d'
/ etc / man. config 에 MAN 이 존재 하 는 줄 을 선별 하고 시작 이 \ # 인 줄 을 삭제 합 니 다.파일 내용 직접 수정
sed -i '$a # this is a new line' regular_express.txt
$가 마지막 줄 을 대표 하기 때문에 a 의 동작 은 새로 추 가 됩 니 다. 따라서 이 파일 의 마지막 줄 이 새로 추 가 됩 니 다.awk
sed 는 한 줄 의 처리 에 자주 사용 되 는 것 에 비해 awk 는 한 줄 을 여러 개의 '총알' 로 나 누 어 awk '조건 유형 1 {동작 1} 조건 유형 2 {동작 2}...' filename
예시
[dmtsai@study ~]$ last -n 5 <==
dmtsai pts/0 192.168.1.100 Tue Jul 14 17:32 still logged in
dmtsai pts/0 192.168.1.100 Thu Jul 9 23:36 - 02:58 (03:22)
dmtsai pts/0 192.168.1.100 Thu Jul 9 17:23 - 23:36 (06:12)
dmtsai pts/0 192.168.1.100 Thu Jul 9 08:02 - 08:17 (00:14)
dmtsai tty1 Fri May 29 11:55 - 12:11 (00:15)
첫 번 째 열 과 세 번 째 열의 데 이 터 를 얻 으 려 면:
[dmtsai@study ~]$ last -n 5 | awk '{print $1 "\t" $3}'
dmtsai 192.168.1.100
dmtsai 192.168.1.100
dmtsai 192.168.1.100
dmtsai 192.168.1.100
dmtsai Fri
awk 는 줄 의 마지막 처리 단위 이 고 필드 를 최소 처리 단위 로 합 니 다. 내 장 된 변 수 를 통 해 처리 할 수 있 는 것 은 몇 번 째 줄 의 몇 번 째 열 NF 줄 마다 있 는 필드 총수 NR 가 현재 처리 하고 있 는 몇 번 째 줄 의 데이터 FS 현재 분할 문자 입 니 다.
예시:
Name 1st 2nd 3th
VBird 23000 24000 25000
DMTsai 21000 20000 23000
Bird2 43000 42000 41000
어떻게 나 를 도와 모든 사람의 총액 을 계산 합 니까?그리고 출력 을 포맷 하고 싶 습 니 다!우 리 는 이렇게 고려 할 수 있다.
첫 번 째 줄 은 설명 일 뿐 이 므 로 첫 번 째 줄 은 더하기 (NR = = 1 시 처리) 를 하지 마 십시오.두 번 째 줄 이후 에 총 을 더 한 상황 이 발생 합 니 다 (NR > = 2 이후 처리)
cat pay.txt | \
> awk 'NR==1{printf "%10s %10s %10s %10s %10s
",$1,$2,$3,$4,"Total" }
> NR>=2{total = $2 + $3 + $4
> printf "%10s %10d %10d %10d %10.2f
", $1, $2, $3, $4, total}'
Name 1st 2nd 3th Total
VBird 23000 24000 25000 72000.00
DMTsai 21000 20000 23000 64000.00
Bird2 43000 42000 41000 126000.00
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.