sed의`-n` 옵션은 무엇을합니까? (요청 된

다음에 대한 매뉴얼 페이지 항목입니다 -n.

-엔

패턴 공간의 자동 인쇄 억제

I 때 통지 하지 하여 -n특정 작업을 위해, 각각의 라인은 표준 출력 인쇄 (요청 된 라인이 회 인쇄) :

$ cat test.txt
first
second
third
fourth
fifth

$ sed -n '2,3p' test.txt
second
third

$ sed '2,3p' test.txt
first
second
second
third
third
fourth
fifth

그러나이 법은 다른 명령에는 적용되지 않습니다.

$ sed -n 's/t/T/' test.txt

$ sed 's/t/T/' test.txt
firsT
second
Third
fourTh
fifTh

그래서 무엇을 않습니다 -n정확히 무엇입니까?



답변

일반적으로 sed는 각 행을 처리하고 (대체 등) 결과를 인쇄합니다. 처리에 행이 인쇄되는 경우 (예 : sed의 p명령), 처리 중 한 번, 자동 후 처리 인쇄로 다시 두 번 인쇄됩니다. 이 -n옵션은 자동 인쇄를 비활성화합니다. 즉, 인쇄하도록 구체적으로 지시하지 않은 행은 인쇄되지 않으며, 명시 적으로 인쇄하도록 지시 한 행 (예 p:)은 한 번만 인쇄됩니다.

  • sed -n '2,3p' test.txt -요청에 따라 2 ~ 3 행만 인쇄

  • sed '2,3p' test.txt -각 줄을 (자동으로) 인쇄하고, 라인 2-3을 다시 한 번 인쇄합니다.

  • sed -n 's/t/T/' test.txt -각 줄에서 “t”를 “T”로 바꾸지 만 다음과 같은 이유로 결과를 인쇄하지 않습니다. -n

  • sed 's/t/T/' test.txt -각 줄에서 “t”를 “T”로 바꾸고 결과를 자동으로 인쇄합니다

그리고 몇 가지 예를 더 추가하겠습니다 :

  • sed -n 's/t/T/p' test.txt -각 줄에서 “t”를 “T”로 대체하고 대체가 발생한 행만 인쇄합니다 (예 : “second”가 아님).

  • sed 's/t/T/p' test.txt -각 줄에서 “t”를 “T”로 바꾸고 대체가 발생한 줄을 인쇄 한 다음 각 줄을 자동으로 인쇄합니다 (결과 : “두 번째”가 한 번 인쇄되고 다른 모든 두 번 인쇄).

  • sed '2,3p; 3p' test.txt-라인 1, 4 및 5를 한 번 인쇄합니다 (자동 인쇄). 라인 2를 두 번 (첫 번째 p명령 다음 자동 인쇄), 라인 3을 세 번 (각 p명령 에 대해 한 번 , 다시 자동으로) 행하십시오.