sed의 여러 명령에 대한 질문

sed의 여러 명령에 대한 질문

sed -e 'script' -e 'script'동일 합니까 sed "script;script"?

또한 단일 파일 검사 중에 이러한 여러 명령이 실행됩니까? 아니면 더 많은 스크립트를 넣을수록 파일에 대해 더 많은 스캔/통과가 수행됩니까? (스크립트당 하나)

sed는 스크립팅 언어이기 때문에 다중 전달 이론에 기울고 있습니다... 예를 들어, 다음과 같은 스크립트가 있으면 sed "script;script"다음과 같은 sed 스크립트가 있습니다.

script
script

그러므로 모든 일이 프로그래밍 방식으로 이루어진다고 가정하는 것은 당연합니다.

하지만 그래서 어쩌죠 -e 'script' -e 'script'?

가장 중요한 것은 sed에게 이 작업을 한 번만 수행하여 대용량 파일에 귀중한 CPU 주기를 절약하도록 지시하는 방법이 있습니까?sed가 이 작업을 수행할 수 없다면 이와 같은 작업을 수행할 수 있는 다른 방법이 있습니까? (어쩌면 awk가 더 적합할까요? 잠깐)

시간을 내어 도와주셔서 감사합니다

답변1

  • 각 입력 줄에 대해 각 표현식/스크립트가 차례로 적용됩니다. 주문하다

    sed -e 's/apple/orange/g' -e 's/orange/red/g'
    

    문자열의 모든 항목을 대체합니다apple 그리고 orange문자열로 red.

  • 오직여행데이터를 입력하여. sed처리 스트림은스트림 편집기결국 입력 스트림은 검색 가능하지 않아도 됩니다.

당신이 제시한 예는,

sed -e "script1" -e "script2"

동일합니까?

sed "script1;script2"

이는 다음과 같습니다.

sed -f file1 -f file2

그 중에는 다음과 관련된 과 가 file1포함되어 있습니다 .script1file2script2

sed -f file

file포함 하는

script1
script2

또는

script1;script2

귀하의 임무에 적합한 지 여부 sed는 전적으로 임무에 달려 있습니다. 마찬가지로 파일이나 입력 스트림을 여러 번 구문 분석할 필요가 없습니다 sed. 일부 작업 , 특히 집계된 데이터가 필요한 작업이 awk더 적합합니다 .awk

sed이는 편집기 awk이자 텍스트 처리 언어에 가깝습니다.

관련 정보