sed
그리고 awk
의 상위 집합입니다 grep
. 서로 더 쉽게 할 수있는 일이 있습니다.
grep foo
sed '/foo/!d'
또는 로 쓸 수 awk /foo/
있지만 다음을 고려하십시오.
grep -i foo
sed '/[fF][oO][oO]/!d'
GNU와 같은 비표준 확장을 고려하지 않는 한 있어야합니다 sed '/foo/I!d'
. 또는와 awk
: awk 'tolower($0) ~ /foo/'
나 다시 GNU 확장을 사용 : awk -v IGNORECASE=1 /foo/
.
다른 도구가 좋고 다른 도구와 번거로운 것들 :
grep
grep
간단한 도구이지만 awk
또는 sed
다음 과 같이 재현하기 어려운 매우 특수한 작동 모드가 있습니다 .
grep -i
대소 문자를 구분하지 않는 일치 (위 참조)
grep -Fe "$string"
고정 문자열 검색의 경우 ( export string; awk 'index($0, ENVIRON["string"])'
와 awk
직접 일치하지 않음 sed
)
grep -r
재귀 검색을위한 (비표준)
- (비표준)
grep -P
/ pcregrep
perl-like regexps (일부 sed
구현은 가장 중요한 것은 아니지만 perl-like regexp 지원을 가짐)
- (비표준)
grep -o
일치하는 부분을 반환합니다 (여러 줄 awk
또는 sed
동일)
- (비 표준)
grep -A/B/C
(와 유사한 방식으로 할 다시 고통스러운 경기 주위에 복귀 컨텍스트 sed
또는 awk
)
sed
s/foo/bar/
: sed
의 s
명령에는 awk
다음과 같이 구현하기 어려운 기능이 있습니다 .
s/foo\(.*\)bar/\1/g
: 캡처 (GNU awk에 gensub()
확장명이 있지만)
s/foo/bar/3
: 각 줄에서 3 번째 발생을 교체
- (비표준) : 내부 파일 편집 (GNU에서도 지원되지만
awk
).
어 wk
awk
세 가지 중에서 가장 풍부한 기능입니다.
- 숫자 처리에 적합
- 열 형식의 입력을 처리하는 데 좋습니다.
- 서로 다른 소스에서 데이터를 추출하고 연관 배열로 결합하는 데 적합합니다.
펄
perl
실질적인 추출 및보고 도구로서 모든 것이 최고입니다. 그것이 처음에 디자인 된 것입니다 (모든 것을 sed
/ awk
쓸모없는 도구로 만들기 위해 ).
perl
텍스트 처리를 마스터 하면 심각한 이점이 있습니다. sed
예를 들어 덜 일반적인 명령을보기 전에도 시간을 투자하는 것이 좋습니다 .
공연
경험상 도구가 더 전문화 될수록 가장 효율적입니다. 그러나 이는 구현, 작업 및 기타 몇 가지 다른 요소와 성능에 따라 크게 달라질 수 있습니다.
예를 들어, 매우 빠른 일부 grep
또는 sed
구현이 있지만 예를 들어 멀티 바이트 문자를 지원하지 않으므로 멀티 바이트 로케일의 미국 영어 텍스트에서만 올바르게 작동 할 수 있습니다. 또는 작은 고정 길이 버퍼에서 작동하므로 임의의 입력에서 작동하지 않기 때문에 빠릅니다.