^와 $는 언제 그리고 왜 "줄의 시작"과 "줄의 끝"의 의미를 갖나요?

^와 $는 언제 그리고 왜 "줄의 시작"과 "줄의 끝"의 의미를 갖나요?

많은 명령줄 도구( grep, flex등) 는 ^기호를 사용하여 "줄의 시작"을 나타내고 $기호를 사용하여 "줄의 끝"을 나타냅니다. 이 합의는 언제 이루어졌나요? 이 목적을 위해 두 개의 문자를 예약하는 것이 합리적으로 보이지만 최신 키보드에서는 $기호가 왼쪽에 있다는 것이 약간 이상합니다.^

이것은 완전히 자의적인 결정입니까? 이것은 오래된 키보드 레이아웃에서 나온 것입니까? 일부 오래된 도구가 이런 방식으로 작업을 수행하기로 결정했기 때문에 이 규칙이 사용됩니까?

대답이 무엇이든, 이를 문서화한 주요 소스가 있습니까?

답변1

QED 편집자, 1965년에 작성됨버클리 시간 공유 시스템, $사용파일의 마지막 줄 주소 지정, ed오늘처럼. 바라보다exvivim매뉴얼 페이지 2-1. 그러나 원래 QED 편집기에서는 정규식을 허용하지 않았습니다.

Ken Thompson은 나중에("1960년대 후반") 정규식을 구현한 최초의 편집기인 Multics용 QED 버전을 작성했습니다. 편집자는 ed1969년 Ken의 Unix 개발에 큰 영향을 미쳤습니다(나중에 1971년경 Dennis Richie에 의해 "완성"됨). 불만으로 인해 edBill Joy는 1977년에 PDP-11의 첫 번째 BSD 릴리스를 구현 ex하고 그 일부가 되었습니다.vi

^and 표현식 $과 POSIX 정규식 구문이 된 많은 부분과 오늘날의 의미가 Ken의 QED 버전에서 구현되었습니다. 바라보다매뉴얼 4페이지.

이러한 특정 기호의 선택이 어디서 왔는지는 확실하지 않지만 $마지막 줄을 지정하는 데 사용되는 방식으로 판단하면 이미 "최종" 의미가 있습니다.

일부 터미널에서는 ^이 문자를 생성할 수 없습니다. 이를 통해 \'Ken의 QED 편집기를 대신 사용할 수 있습니다 ^(참조:벨 연구소 핸드북).

답변2

이 사본의 ed(I)날짜는 71년 11월 3일입니다.는 Unix의 첫 번째 버전에서 edQED를 기반으로 함을 확인하고 당시의 현재 의미를 ^나타 냅니다.$

  1. ^정규식 시작 부분의 곡절 부호 문자( )는 줄 시작 부분의 null 문자와 일치합니다.
  2. 정규식 끝에 있는 통화 기호( )는 $줄 끝에 있는 null 문자와 일치합니다.

이 메모그리고위키피디아 페이지 grepgrep1970년대 초반에 만들어졌으며 동일한 정규식 구문을 사용함을  나타냅니다  ed.


정규식의 개념은 컴퓨터 유틸리티에서 정규식을 사용하기보다 거의 20년 정도 앞선 것입니다.  Wikipedia "정규 표현식" 페이지 그리고 이 스택 오버플로 질문 미국 수학자 스티븐 콜 클리네(Stephen Cole Kleene)는 정규식을 창안하거나 적어도 정규식을 설명하고 용어를 만든 공로를 인정받았습니다. 그의 논문은 많은 역사적 문서에 언급되어 있습니다. 신경망 및 유한 오토마타의 이벤트 표현(PDF). 1951년 12월 15일자로 작성된 101페이지 분량의 문서는 읽기 어렵고 (내가 아는 한)아니요^및 구문을 언급하세요 $. 그러나 이는 *논문 49페이지(PDF 파일 52페이지)에서 "0개 이상의 이전 항목"을 의미합니다. 이것은 (다소) "로 널리 알려져 있습니다.클린트".

관련 정보