문제

  • awk와 sed의 차이점은 무엇입니까?
  • SED 및 AWK 도구에 가장 적합한 사용 사례는 무엇입니까?
도움이 되었습니까?

해결책

sed 스트림 편집기입니다. 그것은 문자의 스트림과 함께 일자 기준으로 작동합니다. Goto 스타일 루프 및 간단한 조건부 (패턴 매칭 및 주소 일치 외에)를 포함하는 원시 프로그래밍 언어가 있습니다. 본질적으로 패턴 공간과 보류 공간의 두 가지 "변수"가 있습니다. 스크립트의 가독성은 어려울 수 있습니다. 수학적 작업은 기껏해야 매우 어색합니다.

다양한 버전이 있습니다 sed 명령 줄 옵션 및 언어 기능에 대한 다양한 수준의 지원을 제공합니다.

awk 구분 된 필드를 지향적으로 지향합니다. 그것은 훨씬 더 강력한 프로그래밍 구성을 포함합니다 if/else, while, do/while 그리고 for (C 스타일 및 배열 반복). 변수 및 단일 차원 연관 어레이 플러스 (IMO) Kludgey 다중 차원 배열에 대한 완전한 지원이 있습니다. 수학적 작업은 C의 수학과 비슷합니다 printf 그리고 기능. "awk"의 "k"는케이"C Programming Language"명성의 "Kernighan and Ritchie"에서와 같이 Ernighan " 호와 w아인버거). 하나는 아마도 awk.

암소 비슷한 일종의 영양 awk (gawk)에는 최신 버전의 실제 다차원 배열을 포함하여 수많은 확장 기능이 있습니다. 다른 변형이 있습니다 awk 포함 mawk 그리고 nawk.

두 프로그램 모두 텍스트를 선택하고 처리하기 위해 정규식을 사용합니다.

나는 사용하는 경향이있다 sed 텍스트에 패턴이있는 곳. 예를 들어, "회계사의 괄호"형식 (예 : 231.45)과 함께 "마이너스 서명 다음 일련의 숫자"(예 : "-231.45") 형식의 일부 텍스트에서 모든 음수를 대체 할 수 있습니다. ) 이것을 사용하여 (개선의 여지가 있습니다) :

sed 's/-\([0-9.]\+\)/(\1)/g' inputfile

나는 사용할 것이다 awk 텍스트가 행과 열처럼 보일 때 awk "레코드"및 "필드"를 나타냅니다. 위와 비슷한 작업을 수행하려는 경우 간단한 쉼표로 구분 된 파일의 세 번째 필드에서만 다음과 같은 작업을 수행 할 수 있습니다.

awk -F, 'BEGIN {OFS = ","} {gsub("-([0-9.]+)", "(" substr($3, 2) ")", $3); print}' inputfile

물론 그것들은 각각 제공 해야하는 모든 기능을 설명하지 않는 매우 간단한 예입니다.

다른 팁

1) awk와 sed의 차이점은 무엇입니까?

둘 다 텍스트를 변환하는 도구입니다. 그러나 Awk는 단지 텍스트를 조작하는 것 외에 더 많은 일을 할 수 있습니다. 배열, 루프, IF/Else Flow Control 등과 같이 프로그래밍에서 배우는 대부분의 것들과 함께 프로그래밍 언어 자체로 SED에서도 "프로그램"을 할 수 있지만 그 안에 작성된 코드를 유지 관리하고 싶지는 않습니다. .

2) SED 및 AWK 도구에 가장 적합한 사용 사례는 무엇입니까?

결론 : 매우 간단한 텍스트 구문 분석을 위해 SED를 사용하십시오. 그 이상으로, awk가 더 좋습니다. 사실, 당신은 SED를 모두 버리고 awk를 사용할 수 있습니다. 그들의 기능이 겹치고 awk는 더 많은 일을 할 수 있기 때문에 awk를 사용하십시오. 학습 곡선도 줄입니다.

두 도구는 텍스트로 작동하기위한 것이며 두 도구 모두 사용할 수있는 작업이 있습니다.

나에게 그들을 분리하는 규칙은 다음과 같습니다. sed 작업을 자동화하려면 텍스트 편집기에서 수동으로 수행 할 수 있습니다. 그것이 스트림이라고 불리는 이유입니다 편집자. (동일한 명령을 사용하여 vim에서 텍스트를 편집 할 수 있습니다). 사용 awk 텍스트를 분석하려면 필드 계산, 총계를 계산하고 구조를 추출 및 재구성하는 등

또한 잊지 말아야합니다 grep. 사용 grep 텍스트 (파일)에서 무언가를 검색/추출하려면

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top