Awk

如何通過數字範圍過濾行?

  • February 9, 2022

該文件只有一列:

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

我想過濾和之間的2021010520210108

我嘗試使用 awk 進行過濾,date但這會引發語法錯誤:

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

您會收到語法錯誤,因為 -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/

你可以用 sed 做到這一點:

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

引用自:https://unix.stackexchange.com/questions/689816