2016-08-18 2 views
0

나는 여기에 코드 골프의 질문에 대답 :
https://codegolf.stackexchange.com/q/89400/57100
내 대답 :
https://codegolf.stackexchange.com/a/89421/57100
내 대답을 개선하기 위해 sugestion했다 코멘트를 가지고,하지만 난 알아낼 수 없습니다 정확히 어떻게 작동하는지.아포스트로피

수수께끼는 소스 코드에있는 문자 만 입력하고 출력하는 것이 었습니다.

제안했다 :

grep -o '[] [|\'\'greposrtu-]|sort -u 나는 첫 번째 ] 브래킷 식을 폐쇄하지 -o, sort -u를 얻을,하지만 난 그렙에 대한 인수의 나머지 부분에 조금 혼란 스러워요. 내가 말할 수있는 한, 첫 번째 '은 문자열을 열지 만 맨 마지막에 문자열을 닫지는 않습니다. 또한, 브래킷 발현의 첫 번째 \' (나는 더 입력을 기다립니다 모두 \'의를 꺼내 경우) 문자열을 닫을 것뿐만 아니라 \ 다음

하는 몇 가지 다른 더 최소한의 예와 일치 :
1. grep -o '[]'] 일치 ]하지만 '
경기 \, []하지만 '
3. grep -o '[][\'\'] 경기 ', [, ] 및이 예제에 대한 grep: Unmatched [ or [^

질문 :
4. grep -o '[']오류 제공
1. 왜 ' 문자열을 닫습니다 않습니다,하지만 ]는 이후 그 문자열에 브래킷 식을 닫습니다? \'\과 일치하는 이유는 무엇입니까?
3. 이번에 처음으로했던 것보다 \이 아닌 이 이번에 '과 일치하는 이유는 무엇입니까?
'[]']은 왜 작동하지만 '[']은 작동하지 않는 이유는 무엇입니까?

답변

2

작은 따옴표로는 \은 특별한 의미가 없습니다. 따라서, grep의 인수는 내부의 첫번째 문자가없는 경우 따옴표 작은 따옴표 즉

  • \'
  • grepostru-] 리터럴 문자에

    • [][|\, ]grep에 대한 특별한 의미가 없습니다 포함 bash에는 특별한 의미가 없습니다.
  • +0

    그래서 grep은'[] [| \ 'grepstru-]'를 보았습니까? – Riley

    +0

    @Riley : 'xactly. – choroba

    +0

    감사합니다. 나는 항상'''''나는'''을 사용해야한다고 생각했습니다. – Riley