파일에는 단 하나의 열만 있습니다.
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/