임의의 단어가 포함된 "list"라는 텍스트 파일이 있습니다.
he
she
we
his
her
with
his this this -- this
this
이 sed 명령을 실행했습니다.
sed '1,4p' list
내 생각에 이 sed 명령은 파일의 처음 4개 단어를 나열하는 것이므로 출력은 다음과 같습니다.
he
she
we
his
그러나 출력은 다음과 같습니다.
he
he
she
she
we
we
his
his
her
with
his this this -- this
this
누구든지 내가 뭘 잘못하고 있는지 또는 왜 출력이 다른지 말해 줄 수 있습니까?
답변1
당신은 잊었기본 동작sed가 하는 일은 각 패턴 공간(라인)을 인쇄하는 것입니다. 따라서 기본 동작을 억제하려면 -n
스위치를 추가해야 합니다.
sed -n '1,4p' list
답변2
답변3
일반적인 기능은 무엇입니까
스크립트 표현식은 각 줄에서 차례로 실행됩니다.
한 줄에서 표현식을 실행하려면 sed
먼저 해당 줄에 복사하세요.패턴 공간.
그런 다음 패턴 공간을 입력으로 사용하여 모든 표현식이 실행되고 결과가 패턴 공간에 다시 기록됩니다.
따라서 일반적으로 해당 라인의 작업 단계가 완료되면 패턴 공간에 최종 문자열이 표시됩니다. 대부분의 경우 s//
여러 명령으로 변경된 경우와 같이 출력으로만 사용합니다 . 마치 표현식이 추가된 것처럼 최종 패턴 공간을 인쇄하는 것이
유용한 경우가 많기 때문입니다 .sed
p
이로 인해 발생하는 명령의 출력을 이미 볼 수 있습니다.
- 선이 패턴 공간에 배치됩니다.
- 스크립트는 다음을 사용하여 일치하는 네 줄의 패턴 공간을 인쇄합니다.
p
- 패턴 공간은 완료 시 업데이트되지 않습니다.
- 이미 표현식 목록의 마지막에 있으므로 기본적으로 패턴 공간이 그대로 인쇄됩니다.
"모든 라인"을 출력하고 있습니다.그리고처음 4개 행" - "처음 4개 행뿐만 아니라 모든 행"과 반대입니다.
따라서 반복되는 행에서 각 줄의 첫 번째 줄은 인쇄되는 내용이고 두 번째 줄은 기본적으로 인쇄되는 내용입니다.
옵션( sed
)은 기본 인쇄 패턴 공간을 전환합니다.-n
--quiet
sed -n 1,4p list
원래 명령이 수행하는 작업을 확인하기 위해 두 줄을 다르게 보이게 만들 수 있습니다. 마지막에 인쇄하기 전에 다음을 추가하여 패턴 공간을 변경합니다 -
.
$ sed -e '1,4p' -e 's/^/- /' list
he
- he
she
- she
we
- we
his
- his
- her
- with
- his this this -- this
- this
( -e
이러한 옵션은 여러 표현식을 제공하는 데 필요합니다. 's/^/- /'는 줄 시작 부분의 모든 항목을 대체합니다 -
.)