說我有:awk中:打印特定值範圍
> id|lastName|firstName|gender|birthday|creationDate|locationIP|browserUsed
>
> 13194139534963|Berty|Jean|male|1988-08-02|2012-04-02T08:33:15.012+0000|41.216.190.153|Google
> Chrome
>
> 13194139535544|Oliveira|Manuel|male|1984-10-31|2012-03-14T16:00:12.287+0000|109.71.166.230|Internet
> Explorer
>
> 13194139537327|Wei|Lei|male|1987-01-06|2012-03-13T03:07:51.899+0000|27.99.188.150|Internet
> Explorer
>
> 13194139539118|Alvarez|Monica|male|1989-10-17|2012-02-25T19:18:54.137+0000|190.169.213.242|Internet
> Explorer
>
> 13194139539746|Xu|Wei|female|1986-11-30|2012-03-19T23:16:12.495+0000|27.103.77.193|Firefox
我想用這三個參數的命令:./tool.sh --Born,因爲dateA --Born,直到dateB -f文件
1)如果誕生,因爲和出生的,直到日期給予我想兩個特定日期(年 - 月 - 日)之間的打印所有出生(整行) 例 ./tool.sh - 自 - 1988-08-02 - 寶寶 - 直到2012-09-13 -f文件 輸出:
13194139534963|Berty|Jean|male|1988-08-02|2012-04-02T08:33:15.012+0000|41.216.190.153|Google
13194139539118|Alvarez|Monica|male|1989-10-17|2012-02-25T19:18:54.137+0000|190.169.213.242|Internet
Explorer
2)如果只是因爲生日而給出的,我想列出所有出生日期和之後的人(整行)。 實施例: ./tool.sh --Born-自1988年8月2日-f文件 輸出: 同1)
3)如果只有出生-直到日期給出我想列出所有直到那一天出生的人(再次是關於他們的整條線)。 ./tool.sh --Born,直到1988年8月2日-f文件 輸出:
13194139535544|Oliveira|Manuel|male|1984-10-31|2012-03-14T16:00:12.287+0000|109.71.166.230|Internet Explorer
13194139537327|Wei|Lei|male|1987-01-06|2012-03-13T03:07:51.899+0000|27.99.188.150|Internet Explorer
13194139539746|Xu|Wei|female|1986-11-30|2012-03-19T23:16:12.495+0000|27.103.77.193|Firefox
我的代碼是:
while [ $# -gt 0 ];do #Get and store Dates (Since-Until)
if [ "$1" = --born-since ];then
if [[ "$2" =~ $re ]];then #re='[0-9]-*' # Check if $2 is number
BSDate=$2
BSYear=$(echo "$BSDate" | awk -F '-' '{print $1}') # Get BSYear
BSMonth=$(echo "$BSDate" | awk -F '-' '{print $2}') # Get BSMonth
BSDay=$(echo "$BSDate" | awk -F '-' '{print $3}') # Get BSDay
fi
elif [ "$1" = --born-until ];then
if [[ "$2" =~ $re ]];then
BUDate=$2
BUYear=$(echo "$BUDate" | awk -F '-' '{print $1}') # Get BUYear
BUMonth=$(echo "$BUDate" | awk -F '-' '{print $2}') # Get BUMonth
BUDay=$(echo "$BUDate" | awk -F '-' '{print $3}') # Get BUDay
fi
fi
shift
done
if [ "$BSDate" ] && [ "$BUDate" ];then #If both date arguments exist
elif [ "$BSDate" ];then
elif [ "$BUDate" ];then
fi
如果我進入--Born,因爲1998-10-30在awk中,參數正確地通過評估= 1998年= BSYear,10 = BSMonth,30 = BSDay。有人可以幫我實現awk部分嗎?
在您輸入的」生日「內沒有任何日期等於或在」1998-10-30「之後。你寫*它工作正常* - 但它應該不輸出 – RomanPerekhrest
這就是我想要的。你的觀點?該程序將在任何.dat文件上運行。 –
你能顯示'./tool.sh --born-自1987-01-01'的預期結果嗎? – RomanPerekhrest