다음과 같은 텍스트 파일이 있습니다.
Data1 AppFlows
Data2 AppFlows-1
만약 내가한다면
grep '\bAppFlows\b' file
이 두 줄을 인쇄하는데 이는 우리가 -
경계를 고려하지 않은 것 같다는 뜻입니다.
나는 주위를 둘러보았고 비슷한 것을 발견했습니다.
grep -w 'AppFlows$' file
그러나 그것은 도움이 되지 않았습니다.
정확히 일치하는 문자가 있는 줄을 인쇄하고 다음을 출력하는 모든 메서드
Data1 AppFlows
답변1
문제는 이것이 -w
"전체 단어를 구성하는 일치 항목을 포함하는 줄만 선택"한다는 의미입니다. 귀하의 경우에는 -
실제로 단어 경계로 간주됩니다. 즉, AppFlows-1
포함은 AppFlows
"전체 단어"와 같습니다 AppFlows foo
. 이제 메소드 $
뒤의 공백으로 인해 실패하므로 AppFlows
GNU로 시도해 볼 수 있습니다 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([^-]|$)"
이것을 우연히 발견한 사람을 위해