프로그래밍을 할 줄 모르는 친구가 힘들어 하는 일이 있었습니다.
회사에 매 주 복사 붙여넣기를 해야 하는 반복 작업이 있었던 것입니다.
스스로 코딩을 배워서 하려고 하길래, 엄청난 고난😇이 보였습니다. 너무 시간이 오래 걸릴 것 같아서 도와주었습니다. 이 글에서 그 것을 해결한 과정과 느낀 것을 적어보려고 합니다. 비전공자이지만 나름 C언어와 linux 명령어를 공부한 적이 있습니다🔥
이 글에서는
프로그램
을 만듭니다.
C File에서 문자를 추출해, 새로운 C File을 생성해줄 것입니다.
결과와 과정을 아래의 깃허브에 정리해두었습니다.
https://github.com/keinn51/extract_string
⭐️ 메인 로직을 직접 실행해보실 수도 있습니다! ⭐️
코드 정리가 안 되어 있는 점 참고 부탁드립니다ㅎㅎ
https://onlinegdb.com/qqqBSACYF
이런 작동을 하는 프로그램을 원한다고 말해왔습니다.
회사의 데이터(.txt) ➡️ 자신이 원하는 데이터를 뽑아낸 새로운 텍스트(.txt) 생성
대충 아래처럼 생긴 데이터를 회사에서 받는다고 합니다.
내용은 보안상의 이유로 모두 dummy로 대체합니다. 틀만 참고합니다.
# DAY 1
***********************************************
2303.1d shift started by : ABCD/EFGH/WWWW/ACXX 16/JAN/2023 09:00*
****************************************
1004 install and connect DOUGHTNUT
IDONEI CONNECT DOUGHTNUT
+4eye check : ABCD/LLLL
++++++++++++++++++++++
2303.1d shift ended by : ABCD/EFGH/WWWW/ACXX 16/JAN/2023 09:00*
++++++++++++++++++++++
# DAY 2
***********************************************
2303.1d shift started by : ABCD/CCCC/WWWW/WIOQ 17/JAN/2023 09:00*
****************************************
1004 install and connect SANCHO
IDONEI CONNECT SANCHO
+4eye check : ABCD/CCCC
1004 install and connect WHALE
IDONEI CONNECT WHALE
+4eye check : WIOQ/WWWW
++++++++++++++++++++++
2303.1d shift ended by : ABCD/CCCC/WWWW/WIOQ 17/JAN/2023 09:00*
++++++++++++++++++++++
....
Day 1과 Day2는 임시로 넣어둔 것입니다. 데이터가 날짜 단위로 묶여 있습니다. 위 텍스트에서 다음 세 문장을 뽑아내어야 합니다.
shift started by
가 들어가는 문장을 찾습니다.4eye check
가 들어간 문장을 가져옵니다.숫자로 시작하는 문장
을 가져옵니다.이렇게 1~3번 문장을 가지고 와서, 새로운 텍스트(.txt) 로 만들어내야 합니다.
# 데이터 묶음 1
2303.1d shift started by : ABCD/EIDK/WWWW/WIOQ 16/JAN/2023 09:00*
1004 install and connect DOUGHTNUT
+4eye check : ABCD/EIDK
# 데이터 묶음 2
2303.1d shift started by : ABCD/EIDK/WWWW/WIOQ 16/JAN/2023 09:00*
1004 install and connect DOUGHTNUT
+4eye check : ABCD/EIDK
1004 install and connect WHALE
+4eye check : WIOQ/WWWW
날짜 별 데이터 묶음으로 나올 것입니다.
제가 생각한 할 일의 순서와 해결법은 다음과 같습니다.
미천한 C언어 경험에 미루어보면, linux 명령어와 c언어를 사용하면 된다는 생각이 들었습니다.
구현 순서는 사진과 같습니다. 프로그램은 C언어로 작성됩니다. 추가 설명을 해보겠읍니다.
open 함수
를 사용해 C프로젝트로 가져옵니다.
출처 : https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html
"추가 설명만으로는 부족하다, 더 알고 싶다!"
하시는 분들은 사진을 참고해보십시오.
C언어로 작성된 파일이 Machine Code가 되는 과정을 상세하게 적어준 그림입니다.
사진을 더 상세하게 설명할 수 있지만, 이미 잘 정리되어 있는 글을 발견해서 공유드려요🙂
https://cs-fundamentals.com/c-programming/how-to-compile-c-program-using-gcc
linux에서는 .a
라는 확장자를 정적 라이브러리로 사용합니다. windows에서는 .lib
을 사용한다고 합니다.
LIB(lib.exe)는 표준 라이브러리를 만들고, 라이브러리를 가져오고, 프로그램을 빌드할 때 LINK 와 함께 사용할 수 있는 파일을 내보냅니다. LIB는 명령 프롬프트에서 실행됩니다. (🗣 microsoft)
이로 인해서, .a 파일을 이용하기 힘들었고 결국 구현에 필요한 소스 코드(.c) 들을 레포지토리에 넣어두어야 했습니다. 참고 자료
mac에서는 sys/param.h 를 사용해서 프로그램 실행 경로를 가져왔습니다.
이는 window 환경에서 전처리가 안 되었습니다. 이 header file은 linux용 인 듯합니다. 이 것은 확실하지는 않습니다. 누군가가 stackoverflow에서 그렇다고 했지요.
아마 mac과 window에서 path 환경 변수를 참조하는 방법이 달라서 그런 것 같다는 저의 판단입니다.
열심히 만들어서 작동도 되게 했..지만 친구의 회사 보안상 프로그램을 반입할 수 없다고 합니다. 내가 친구의 회사 상황과 요구 사항을 더욱 자세하게 들었어야 한다는 생각
이 드네요.🧐 다음부터 누군가가 회사에서 사용할 프로그램을 만들어줄 수 있냐고 하면, 정중히 거절하는게 좋아보입니다 껄껄
그래도 누군가에게 프로그래밍으로 도움을 줄 수 있다는 것을 느꼈습니다.
또 누군가를 도와줄 수 있으면 열심히 도와주고 싶습니다 👋🏻