하이픈과 같은 특수 문자를 무시하고 문자열을 정확하게 일치시킵니다.

하이픈과 같은 특수 문자를 무시하고 문자열을 정확하게 일치시킵니다.

다음과 같은 텍스트 파일이 있습니다.

Data1 AppFlows
Data2 AppFlows-1

만약 내가한다면

grep '\bAppFlows\b' file

이 두 줄을 인쇄하는데 이는 우리가 -경계를 고려하지 않은 것 같다는 뜻입니다.

나는 주위를 둘러보았고 비슷한 것을 발견했습니다.

grep -w 'AppFlows$' file

그러나 그것은 도움이 되지 않았습니다.

정확히 일치하는 문자가 있는 줄을 인쇄하고 다음을 출력하는 모든 메서드

Data1 AppFlows

답변1

문제는 이것이 -w"전체 단어를 구성하는 일치 항목을 포함하는 줄만 선택"한다는 의미입니다. 귀하의 경우에는 -실제로 단어 경계로 간주됩니다. 즉, AppFlows-1포함은 AppFlows"전체 단어"와 같습니다 AppFlows foo. 이제 메소드 $뒤의 공백으로 인해 실패하므로 AppFlowsGNU로 시도해 볼 수 있습니다 grep.

$ grep -wP 'AppFlows\w*$' file
Data1 AppFlows

완전한 단어로 표시되면 AppFlows줄 끝까지 0개 이상의 공백 문자가 뒤따라 일치합니다.

또 다른 방법은 두 번째 필드가 있는 행을 찾는 것입니다 AppFlows.

$ awk '$2=="AppFlows"' file
Data1 AppFlows

또는 어떤 필드가 될지 미리 모르는 경우 다음을 사용하세요.

$ awk '{ k=0;for(i=1;i<=NF;i++){ if($i=="AppFlows"){k++}}}k' file
Data1 AppFlows

답변2

나는 다음과 같은 일을했다

 egrep "(^|[^-])\AppFlows\b([^-]|$)"

이것을 우연히 발견한 사람을 위해

관련 정보