숫자 범위로 행을 필터링하는 방법은 무엇입니까?

숫자 범위로 행을 필터링하는 방법은 무엇입니까?

파일에는 단 하나의 열만 있습니다.

fs://derps123/20210103/
fs://derps123/20210104/
fs://derps123/20210105/
fs://derps123/20210106/
fs://derps123/20210107/
fs://derps123/20210108/
fs://derps123/20210109/

20210105와 사이의 행을 필터링하고 싶습니다 .20210108

awk를 사용하여 필터링을 시도했지만 date구문 오류가 발생합니다.

awk -v date='gs://derps123/''$1!=date{next};/20210105/,/20210108/' folders.txt

답변1

-v옵션 값과 awk 프로그램 사이에 공백이 없기 때문에 구문 오류가 발생합니다.

날짜를 다음과 같이 숫자로 처리할 수 있습니다.

$ awk -v low=20210105 -v high=20210108 -v FS='/' '$4 >= low && $4 <= high' folders.txt
fs://derps123/20210105/
fs://derps123/20210106/
fs://derps123/20210107/
fs://derps123/20210108/

답변2

sed를 사용하여 이 작업을 수행할 수 있습니다.

sed -n '/20210105/,/20210108/p' folders.txt

답변3

awk전혀 그럴 필요가 없습니다. grep충분할 것입니다:

grep '2021010[5-8]' you_data

파일이 날짜별로 정렬되지 않은 경우에도 작동합니다.

그러나 다음을 사용하려는 경우 awk:

awk -F/ -v r=2021010[5-8] '$(NF-1) ~ r' your_data

답변4

 awk -F "/" '$(NF-1)>=20210105 && $(NF-1)<=20210108'  filename

fs://derps123/20210105/
fs://derps123/20210106/
fs://derps123/20210107/
fs://derps123/20210108/

관련 정보