다음 명령을 사용하여 하위 디렉토리에서 물건을 grep합니다.
find . | xargs grep -s 's:text'
그러나 이것은 또한 다음과 같은 것을 찾습니다. <s:textfield name="sdfsf"...../>
그것을 피하기 위해 무엇을 할 수 있습니까? <s:text name="sdfsdf"/>
또는 그 문제에 대해 …. 또한 찾습니다 <s:text somethingElse="lkjkj" name="lkkj"
기본적 s:text
와 name
같은 줄에 있어야합니다 ….
답변
-w
단어의 끝임을 지정하는 옵션을 원합니다 .
find . | xargs grep -sw 's:text'
답변
\b
“단어 경계”에서 일치하는 데 사용 하면 전체 단어에 대해서만 검색이 일치합니다.
그래서 당신의 grep은 다음과 같습니다.
grep -r "\bSTRING\b"
색상과 줄 번호를 추가하는 것도 도움이 될 수 있습니다.
grep --color -rn "\bSTRING\b"
에서 http://www.regular-expressions.info/wordboundaries.html :
단어 경계에 해당하는 세 가지 위치가 있습니다.
- 첫 번째 문자가 단어 문자 인 경우 문자열의 첫 번째 문자 앞.
- 문자열의 마지막 문자 뒤, 마지막 문자가 단어 문자 인 경우.
- 하나는 단어 문자이고 다른 하나는 단어 문자가 아닌 문자열의 두 문자 사이.
답변
xargs
grep 검색을 재귀 적으로 수행 하여 명령을 삭제할 수 있습니다 . 그리고 일반적으로 ‘s’플래그가 필요하지 않습니다. 그 후:
grep -wr 's:text'
답변
답변
나머지 텍스트 부분 만 필터링하려는 경우 이렇게 할 수 있습니다.
xargs grep -s 's:text '
s:text
마지막 t 뒤에 공백이있는 인스턴스 만 찾습니다 . s:text
이름 요소 만있는 인스턴스 를 찾아야하는 경우 결과를 다른 grep
표현식으로 파이프 하거나 정규식을 사용하여 필요한 요소 만 필터링하십시오.