다음 두 줄이 포함된 "hello.txt"라는 텍스트 파일이 있습니다.
Hello WORLD!
Hallo world!
내가 다음을 쓸 때
grep -i h[ae]llo hello.txt
터미널에서는 출력이 없습니다. 두 줄이 인쇄될 것으로 예상됩니다.
답변1
어떤 종류의 문자 집합 문제로 인해 제대로 작동하지 못할 수 있습니다. grep
도움이 될 수 있는 다음 명령 중 일부를 사용하여 성공적인 사용법을 재현할 수 있어야 합니다 .
먼저 문자 집합 문제를 방지하기 위해 터미널에서 텍스트 파일을 만들어 보겠습니다.
echo -e "Hello\nHallo" > foo.txt
이 플래그는 리터럴 시퀀스 대신 개행 문자가 해석되기를 원함을 -e
알려줍니다 . 이것은 우리에게 두 줄을 제공합니다. 아래와 같이 파일에 액세스하여 문제 없이 볼 수 있어야 합니다 .echo
\n
cat
cat foo.txt
Hello
Hallo
이제 이전에 게시한 명령을 사용할 수 있습니다 grep
. (실제로는 따옴표가 필요하지 않지만 bash에는 특수 문자가 있으므로 사용해야 합니다. 또한 큰 따옴표 대신 작은 따옴표를 사용하십시오)
grep -i 'h[ae]llo' foo.txt
그러면 예상된 결과가 생성됩니다. 이것이 효과가 있지만 다른 텍스트 파일에 무슨 일이 일어나고 있는지 궁금하다면 무슨 일이 일어나고 있는지 파악하기 위해 수행할 수 있는 몇 가지 작업이 있습니다.
먼저 file
파일에 대해 명령을 실행해 보세요. 이는 이것이 텍스트 파일이고 인코딩 방법을 알려줍니다.
file foo.txt
foo.txt: ASCII text
뭔가 이상하거나 다른 문자 인코딩을 얻으면 문제가 될 수 있습니다. 다음을 통해 파일의 16진수 덤프를 확인할 수도 있습니다.
16진수 덤프 -C foo.txt
00000000 48 65 6c 6c 6f 0a 48 61 6c 6c 6f 0a |Hello.Hallo.|
0000000c
또는 다음과 같은 브라우저 내 Linux 에뮬레이터를 사용하여 문제를 해결하는 데 도움을 받을 수 있습니다.
GCC도 있어서 C 코드를 컴파일할 수 있습니다!