쉘 스크립트로 원하는 문자열이나 숫자가 있는 해당 라인 출력하는 법이 궁금합니다.
안녕하세요 쉘 스크립트를 만드는걸 구글링하며 찾는 중인데 막히는 부분이 있어서 도움 요청드립니다.
프로그래밍쪽은 전혀 베이스가 없는데 갑자기 만들어야해서 너무나 막막하네요..
vi /test/aaa1로 아래와 같은 문서를 만들었다고 치고
2020 12 28 111111111
2021 1 1 222222222
2021 1 1 33333333
2021 1 9 44444444
2021 1 9 555555555
.
.
.
문서는 계속 날짜별로 내용이 업데이트 될 예정입니다.
매일매일 당일에 해당하는 업데이트되는 라인줄만 출력되게 하고싶습니다.
오늘이 1월 9일이니 결과물이
2021 1 9 44444444
2021 1 9 555555555
이렇게만 나오게 출력하는 방법이 궁금합니다.
awk도 구글링해보고 for문이라는 것도 구글링해 시도해 보고있는데 이것들을 조합해서 원하는 날짜의 라인줄만 출력하려 하면 계속 안되네요... 너무나 답답하여 도움을 받고자 질문글 올립니다.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+내용 추가합니다.
어찌저찌 구글링을 하여
awk '$3==숫자 {print $0}' /test/aaa1
이렇게 사용하면 /test/aaa1문서에서 세번째 필드가 내가 입력한 숫자와 같으면 해당 라인을 출력해준다는 것을 발견했습니다.
숫자부분에 9를 넣어 테스트 해보았는데 잘 되더라고요.
그래서 사용자에게 숫자를 입력받고 그 숫자와 일치하는 라인을 출력해보고 싶어서
echo -n "출력할 일자 입력: "
read day
awk '$2==$day {print $0}' /test/aaa1
이렿게 스크립트를 수정했습니다만 $day로 수정하니 결과가 출력되지 않더라고요.
이 부분은 어떻게 해결해야 할까요?
원본자료를 만드실때 규칙성이 부여되면 어떤 언어를
원본자료를 만드실때 규칙성이 부여되면 어떤 언어를 쓰더라도 구문분석이 쉬워집니다.
규칙성이 없으면 쎄가빠지게 정규표현식으로 지랄발광을 해도 결과물을 출력하기 쉽지 않을텐데요
규칙성으로 날짜포맷은 date 명령어 기준 --iso-8601 옵션이 참 좋더이다~~~
[우분투 18.04 파여폭스 나비에서 적었어유~]
--
^고맙습니다 감사합니다_^))//
도움 주셔서 감사합니다!
답변주셔서 정말로 감사합니다. 써주신 댓글을 확인하기 전에 어찌저찌 구글링을 하여 awk를 이용해 3번째 필드에서 원하는 숫자값을 입력하여 일치하면 출력해주는 스크립트를 만들었는데 또 다른 문제가 생겼습니다. 사용자에게 숫자를 입력받고 입력받은 숫자와 일치하는 라인줄을 출력하려는데 여기서 또 막히네요.
본문에 내용을 추가하였는데 혹시 해결방법을 알고계신지요?
작은 따옴표 안에있는것은 awk 변수이므로 shell
작은 따옴표 안에있는것은 awk 변수이므로 shell 변수를 사용하려면 작은따옴표 밖으로 빼야되요
awk '$2 == '"$day"' {print $0}' /test/aaa1
도움 주셔서 감사합니다!
와........됩니다!! 해결해 주셔서 정말로 감사드립니다!!!
프로그래밍 알지도 못하는데 갑자기 이런걸 만들려니 머리가 빠개질 것 같았는데 정말 큰 도움 받았습니다.
댓글 달기