“1”로 시작하는 줄을 검색하려고합니다.
ls -1 | grep ^1*
그러나 1로 시작하지 않는 행을 반환합니다. 여기서 누락 된 것은 무엇입니까?
답변
정규 표현은 당신이 생각하는 것을 의미하지 않습니다. (^)로 시작하는 모든 줄을 0 번 이상 반복 된 1 회 (*) 번으로 일치시킵니다. 모든 문자열은 해당 정규식과 일치합니다. grep '^1'
당신이 원하는 것을합니다.
답변
다음을 시도 했습니까?
ls -1 | grep "^1"
즉, *
기본적으로를 나타내는을 제거 grep
하여 ^1
식의 발생이 0 이상임을 찾습니다 . 즉, 1로 시작하는 행과 일치하는지 여부를 일치시킵니다.
답변
이것이 귀하의 질문에 대한 답변은 아니지만 목표로 보이는 것에 대한 더 나은 해결책입니다.
ls -ld 1*
쉘 글롭을 사용하여로 시작하는 모든 파일을 나열 할 수 있습니다 1
. 주 *
정규 표현식보다 글 로빙 쉘에서 다른 의미를 갖습니다.
답변
^ 1. *는 전체 줄과 일치하거나 위에서 말한 것처럼 ^ 1은 줄에 포함 된 문자열을 얻습니다.
다른 스타일의 정규 표현식은 문자를 나타내는 다른 기호를 사용하며 일부 옵션은 원하는 스타일을 지정합니다. 다른 옵션은 전체 줄을 일치 시킬지 또는 일부만 또는 전체 입력을 하나의 문자열로 일치 시킬지 여부를 지정합니다.