awk에서 양쪽의 변수 문자열에 대해 문자열 비교를 수행하는 방법은 무엇입니까?

awk에서 양쪽의 변수 문자열에 대해 문자열 비교를 수행하는 방법은 무엇입니까?

로서이전 질문에 대한 후속 조치, 문서 양쪽에 가변 문자가 있을 때 유사한 문자열 비교를 수행하는 방법은 무엇입니까?

예를 들어:

# test,date
"test1","27 March 2024 01:37 PM UTC"
"test2","13 April 2024 07:08 AM UTC"
"test4","13 April 2024 07:09 AM UTC"
"test5","13 April 2024 07:10 AM UTC"
"test6","13 April 2024 07:12 AM UTC"

어떻게 될 것인가?이전 답변:

awk -F, -v date="$(date +'%B %Y')\"$" '/^[^#]/ && $2 ~ date{print $1}'

이번 달(작성 당시 2024년 4월)부터 모든 테스트를 인쇄하도록 수정하시겠습니까?

답변1

awk -F, -v date="$(date +'%B %Y')\"$"

April 2024"$변수에 저장된 정규식 만들기 date. 이는 새 입력과 일치하지 않으므로 원하는 다른 일치 정규식 \"$으로 변경하여 일치하는 정규식으로 조정하세요 . 예를 들면 다음과 같습니다.[^\"]*\"$

$ awk -F, -v date="$(date +'%B %Y')[^\"]+\"$" '/^[^#]/ && $2 ~ date{print $1}' file
"test2"
"test4"
"test5"
"test6"

또는 두 번째 필드에 포함될 수 있는 다른 값에 따라 더 강력할 수도 있습니다.

$ awk -F, -v date="$(date +'%B %Y') [0-9]{2}:[0-9]{2} [AP]M [[:upper:]]+\"$" '/^[^#]/ && $2 ~ date{print $1}' file
"test2"
"test4"
"test5"
"test6"

관련 정보