소개
이 프로젝트에서는 Bash 스크립트를 사용하여 Markdown 문서에서 링크 정보를 추출하는 방법을 배우게 됩니다. 이는 소프트웨어 개발에서 흔히 발생하는 작업으로, 개발자는 텍스트 기반 문서에서 특정 정보를 처리하고 추출해야 합니다.
👀 미리보기
$ ./getlink.sh labex_lab1.md
course https://labex.io/courses/
🎯 과제
이 프로젝트에서는 다음을 배우게 됩니다:
- Markdown 문서에서 링크 텍스트와 URL 을 추출하는 Bash 스크립트를 만드는 방법
- 정규 표현식 (regular expression) 과
grep,paste와 같은 명령줄 도구를 사용하여 텍스트 데이터를 처리하는 방법 - 스크립트를 실행 가능하게 만들고 명령줄 인수로 실행하는 방법
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다:
- Markdown 문서에서 링크 정보를 추출할 수 있는 Bash 스크립트를 개발할 수 있습니다.
- 정규 표현식과 일반적인 명령줄 도구의 사용을 포함하여 스크립트의 논리와 구현을 이해할 수 있습니다.
- 이 프로젝트에서 배운 기술을 소프트웨어 개발 작업의 다른 텍스트 처리 작업에 적용할 수 있습니다.
getlink.sh 스크립트 생성
이 단계에서는 Markdown 문서에서 모든 링크를 추출할 수 있는 getlink.sh 스크립트를 생성합니다.
- 텍스트 편집기를 열고
getlink.sh라는 새 파일을 만듭니다. - 다음 코드를 파일에 추가합니다:
#!/bin/bash
## Extract link
grep -E "\[.*\]\(.+\)" "$1" | grep -vP '\!\[' | grep -oP '\[\K[^\]]+(?=\]\([^\)]+\))' > "links.txt"
grep -E "\[.*\]\(.+\)" "$1" | grep -vP '\!\[' | grep -oP '\]\(\K[^\)]+(?=\))' > "urls.txt"
## Merge links and URLs
paste -d ' ' links.txt urls.txt
## Clean up temporary files
rm links.txt urls.txt
- 파일을 저장합니다.
getlink.sh 스크립트 테스트
이 단계에서는 Markdown 파일을 인수로 사용하여 getlink.sh 스크립트를 테스트합니다.
getlink.sh스크립트와 동일한 디렉토리에labex_lab1.md라는 Markdown 파일이 있습니다. 이 파일에는 다음 내용이 포함되어 있습니다:
Use the course categories and tags on the [course](https://labex.io/courses/) page to filter and search for courses
labex_lab1.md파일을 인수로 사용하여getlink.sh스크립트를 실행합니다:
./getlink.sh labex_lab1.md
- 스크립트는 다음을 출력해야 합니다:
course https://labex.io/courses/
이 출력은 스크립트가 Markdown 파일에서 링크 정보를 성공적으로 추출했음을 보여줍니다.
getlink.sh 스크립트 이해
이 단계에서는 getlink.sh 스크립트의 코드를 이해합니다.
스크립트는 다음 작업을 수행합니다:
- 링크 텍스트 추출: 첫 번째
grep명령은 Markdown 파일에서 링크 텍스트를 추출하여links.txt라는 임시 파일에 저장합니다.grep -E "\[.*\]\(.+\)"명령은 Markdown 링크 형식[text](url)과 일치하며,grep -vP '\!\['명령은 이미지 링크를 제외합니다. - 링크 URL 추출: 두 번째
grep명령은 Markdown 파일에서 링크 URL 을 추출하여urls.txt라는 임시 파일에 저장합니다.grep -oP '\]\(\K[^\)]+(?=\))'명령은 Markdown 링크 형식의 URL 부분을 캡처합니다. - 링크 텍스트 및 URL 병합:
paste -d ' ' links.txt urls.txt명령은 임시 파일에서 링크 텍스트와 URL 을 병합하여 공백으로 구분합니다. - 임시 파일 정리:
rm links.txt urls.txt명령은 스크립트 실행 중에 생성된 임시 파일을 제거합니다.
스크립트의 로직을 이해하면, 다른 유형의 링크를 처리하거나 추출된 정보에 대한 추가 처리를 수행하는 등 특정 요구 사항에 맞게 스크립트를 수정하거나 확장할 수 있습니다.
요약
축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



