sed 또는 awk를 사용하여 파일에서 특정 줄을 추출하는 방법

sed 또는 awk를 사용하여 파일에서 특정 줄을 추출하는 방법

파일에서 날짜(예: "5월 1일")로 시작하는 모든 줄을 검색하려면 sed 또는 awk를 사용하여 어떻게 해야 합니까? 이 데이터를 추출하여 화면이나 파일로 보내야 합니다. 감사해요.

답변1

다음으로 시작하는 줄을 추출하려면 May 1:

grep "^May 1\b" file

또는:

sed -n '/^May 1\>/p' file

또는:

awk '/^May 1\>/' file

\>위의 두 가지 에서는 단어 경계 정규식을 지원하는 GNU awk 또는 sed와 같은 도구가 있다고 가정합니다 . 단어 경계의 목적은 정규식 일치를 방지하는 것입니다(예: ) May 10.

5월의 어느 날을 찾고 계시다면:

grep -E "^May [[:digit:]]{1,2}\b" file

어느 달의 특정 날짜를 찾고 있는 경우:

grep -E "^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [[:digit:]]{1,2}\b" file

답변2

printf %s\\n 'Apr 30 aaa' \
             'May 1 bbb' \
             'Feb 29 ccc' \
             'Feb 30 ddd' |

sed -n '/^\(Apr\|Jun\|Sep\|Nov\) \([1-9]\|[12][0-9]\|30\)\>/p
        /^\(Jan\|Mar\|Jul\|Aug\|May\|Oct\|Dec\) \([1-9]\|[12][0-9]\|3[01]\)\>/p
        /^\(Feb\) \([1-9]\|[12][0-9]\)\>/p'

산출:

Apr 30 aaa
May 1 bbb
Feb 29 ccc

관련 정보