Envader를 사용하여 정규 표현식 학습
이번에 저는 Envader를 이용해서 제가 정말 못하는 정규적인 표현을 배우고 정리하고 회고했습니다.
이번에도 학습 환경으로 리눅스에 환경을 구축할 필요 없이 리눅스를 체험할 수 있는 온라인 학습 서비스
Envader
를 활용했다.Envader
가 뭐예요?이런 분들이 계시면 링크가 붙을 테니 참고하세요.Envader 교육 과정 개요
이번에 쓴 대본.
정규 표현식(Reglar Expression)
정규 표현식은 케이스의 원 문자와 같으며 임의의 문자열 모드를 나타내는 표현 방법입니다.
정규 표현식을 사용하면 파일 내의 문자열을 유연하게 검색할 수 있습니다.
조개껍질의 금속 역할에 대한 보도는 이쪽에서 이해하기 쉽다.
Linux의 메타 문자 ~ 메타 문자 ~
나는 원 문자와 정규 표현식이 같다고 생각한다.
그렇게 생각하면서 다른 곳을 검색했지만 깊은 곳에서 표현하기 어려웠던 것 같아요.
정규 표현식과 어댑터가 다르다
그래서 정규 표현식과 어댑터는 다르다
소란을 피울 수도 있지만 공식적인 의미는 자세한 사람에게 맡깁시다.
grep 명령
정규 표현식과 함께 소개하는 빈도가 높은 것은
grep
명령이죠.가능한 일은 파일과 디렉터리, 파일의 내용을 검색하는 명령입니다.
기본용법
grep 検索したい文字 ファイル名
기본적으로 이렇게 사용하는 것이 좋다.Envader를 사용해 보십시오.
# secrets.txtの中身abの文字を検索
envader@172-19-2-2:~$ grep ab secrets.txt
sacret=a4d0bfed76865f9a75abafdc5aef6f66
sacret=8e109e82a6f9fabdb6d5489608e12dfb
sacret=e41be0cb6b646e9a44c97153ab8ddb07
secret=4c8136aba4ba90eceb3206fb8dc53be0
sacret=59c9ab0073053950ad1e9326b019c540
sacret=1e96a6f5c8c9abd38021ff69caacc9a6
sacret=49d255840da28924cad6cc4abc4c3294
sacret=127ebbabb48274c8a4e3689c7b53eec9
sacret=1120916b99d24bb3d847e2cc568ab5ec
sacret=65b7f9034251ed87a13ba1b52abc6c12
sacret=be665ba933eadbddbb3ab5efc31807c4
sacret=c11bc63b936d005873b08c77974ab0cd
sacret=552b0f34c0b392999c43c9eab7b1add2
문자가 포함된 텍스트가 검색되었습니다.이렇게 하면 대상을
ab
로 축소하여 검색할 수 있다.그러나 정규 표현식을 사용하면 조건을 더 상세하게 지정하여 검색할 수 있습니다.
정규 표현식 유형
특수 문자
의향
.
임의의 문자가 있습니다. (모든 문자가 가능하며, 점의 수량만 문자입니다.)
*
앞의 글자를 0회 이상 반복합니다.
[]
[]에 문자가 있음을 의미합니다.
[^ 문자]
에서
^
행의 첫머리 문자
$
행 끝 문자
\
다음 문자를 특수 문자가 아닌 일반 문자로 처리
다시 검색해보면 나오겠지만 이 글은 여기까지 쓰겠습니다.
자유자재로 이해하고 활용하려면 습관이 필요할 것 같다.
왜 그런지 모르겠지만, 나는 항상 이 생각을 이해할 수 없고, 내가 잘하지 못한다는 의식을 가지고 있다.
정규 표현식을 사용해 보세요.
상술한 정규 표현식에 관해서 나는 실제로 사용한 후에 이해하고 싶다.
. 를 사용하여 임의의 문자 찾기
# secrets.txtの中から、aからcまでの間の2文字はなんでもいいから検索
envader@172-19-2-2:~$ grep a..c secrets.txt
sacret=a4d0bfed76865f9a75abafdc5aef6f66
sacret=b3fe0800f16db550a7bcd19d7a79ae08
sacret=2533c3b035d29216faeec65275bb04ba
sacret=35aed67b1626bb7dbec413f5a20c5c9f
sacret=664cfc313ecad901f28090a09c0c4de7
sacret=e41be0cb6b646e9a44c97153ab8ddb07
sacret=1e96a6f5c8c9abd38021ff69caacc9a6
sacret=49d255840da28924cad6cc4abc4c3294
sacret=fb1aedda6c2d169ef9d12a38cfb47331
sacret=4528a29d1da9fc40b1103339a65e0984
sacret=3bfea13c0c2fc9c8e106313ac1cf8aa3
sacret=c6c3ba38e00a3ec2304596733fa26a00
sacret=fe9a5cc8ef0bf10faf52f7a5e136ebe1
sacret=c11bc63b936d005873b08c77974ab0cd
나는 이것이 진짜인 줄 알고 확인했는데 정말 a였다.c 를 사용하여 파일의 내용을 검색할 수 있습니다.대단하다
[]를 사용하여 []에 포함된 문자를 찾습니다.
# secrets.txtの中に、bで始まって1か2の後にcがくる文字列を検索 b12cではない
envader@172-19-2-2:~$ grep b[12]c secrets.txt
sacret=37b5f9aec439ee77c7ad4b1c8ada856c
sacret=d8b1c0f550e4742e3f6178f86fb14b54
sacret=6c592c2d8392ca9f4612fb2c72e84417
sacret=3c1b2c017f60968f1a8a9611345b57fd
이것도 검색이 잘 되네요.헷갈릴 수 있는 것은
ab
가 검색 대상이 아니거나b12c
또는 b1c
가 철저히 검색 대상이 된다는 것이다.$^를 사용하여 줄의 첫머리와 끝을 검색합니다
# ^を使って行頭の文字がsecの文字列を検索
envader@172-19-2-2:~$ grep ^sec secrets.txt
secret=4c8136aba4ba90eceb3206fb8dc53be0
# $を使って、行末の文字が0(ゼロ)の文字列を検索
envader@172-19-2-2:~$ grep 0$ secrets.txt
sacret=191d9d9945545e6e6952a92a0ed14600
sacret=c37acb3ec4956548c8bbfe294222c290
sacret=c25dbd74ef7bfd0299488f6b1beb72a0
secret=4c8136aba4ba90eceb3206fb8dc53be0
sacret=59c9ab0073053950ad1e9326b019c540
sacret=29c9ea4a414d7f04e324ee7742034460
sacret=9a944d408eb76d2470bc71ea1881aca0
sacret=bad330089227df997a2cd9667ffa0ed0
sacret=c6c3ba38e00a3ec2304596733fa26a00
내가 반한 곳은 여기야.줄 첫머리를 검색할 때
b2c
특수 문자로 시작하지만, 같은 ^a
이면 아무것도 보이지 않습니다...왜냐하면,
$a
를 사용하여 줄 끝을 검색 대상으로 할 때 반드시 사용해야 한다$
.나 급해...
근데 배웠어.
*를 사용하여 반복 문자열 찾기
# 行頭の文字がseで始まって、cが0回以上繰り返す文字を検索
envader@172-19-2-2:~$ grep ^sec* secrets.txt
searet=531a5a8fff0e7cbd4031f03eec7e2784
secret=4c8136aba4ba90eceb3206fb8dc53be0
이*의 이해는 좀 어렵다.0회 이상이어서 중복 표시
a$
를 하나로 해석해도 되나.여러 번 해봤는데 이해가 가는 것 같아요.
총결산
c
명령과 정규 표현식을 사용하여 파일과 디렉터리를 더욱 상세하게 검색할 수 있습니다.다만,
grep
검색의 사용법이 이해되지 않아 앞으로도 이용*
반복학습을 할 계획이다.정규 표현식을 능숙하게 사용함으로써 앞으로 프로그래밍 언어를 사용하여 개발하는 데도 도움이 될 것이다.
Envader를 사용하면 자신의 PC 환경을 사용하는 것이 아니라 고장이 나더라도 재가동하면 되기 때문에 매우 편리하다.
끝까지 읽어주셔서 감사합니다.
Reference
이 문제에 관하여(Envader를 사용하여 정규 표현식 학습), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/kobakichi/articles/9f366d482c909c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)