"..."는 다른 문자일 수 있는 "word1...word2"가 포함된 줄을 찾고 싶습니다. 지금까지 나는 다음과 같은 목적을 달성하기 위해 두 개의 grep을 사용했습니다.
grep "$word1" $filename | grep "$word2"
다음과 같이 가정하면 더 빠른 방법이 있습니까?
grep "$word1*$word2" $filename
여기서 *는 특수 문자일 수도 있고 다른 문자일 수도 있습니까?
답변1
사용 .*
:
grep "${word1}.*${word2}" "$filename"
.
임의의 문자와 일치*
앞의 문자 수와 일치합니다.
답변2
이 두 단어가 필요하다면분리된, 즉, 그렇게 한다면아니요abba
일치시키려는 단어 중 하나가 있으면 bb
다음을 사용하십시오.
grep "\\<$word1\\>.*\\<$word2\\>" "$filename"
이 패턴 \<
(여기서는 \\<
셸의 첫 번째 백슬래시를 이스케이프하기 위해 사용)은 단어 앞부분만 일치하고 \>
유사하게 작동하지만 단어 뒤에서만 일치합니다.
\b
전후에 일치하는 alo가 있으며 및 와 동일하게 [[:<:]]
작동합니다 . 구현자는 다양합니다.[[:>:]]
\<
\>
grep