다음에 대한 매뉴얼 페이지 항목입니다 -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
명령 에 대해 한 번 , 다시 자동으로) 행하십시오.