How to pass DATE variable & search with it using AWK ?
My file is as below
==================== cat test ABCDE1020000009,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org, ABCDE1020000012,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171225z ABCDE1020000011,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171226Z ABCDE1020000008,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171224Z ABCDE1020000002,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org, ABCDE1020000001,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171223Z ABCDE1020000004,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171216Z ABCDE1020000007,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org, ABCDE1020000010,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org, ABCDE0000189991,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171226Z Expected output is: ==================== ABCDE1020000012,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171225z ABCDE1020000011,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171226Z ABCDE1020000008,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171224Z ABCDE1020000001,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171223Z ABCDE1020000004,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171216Z ABCDE0000189991,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171226Z I want to make the above output using exact date. awk -F, -v DATE7="$(date +"%Y%m%d" -d "7 days ago")" -v DATE6="$(date +"%Y%m%d" -d "6 days ago")" -v DATE5="$(date +"%Y%m%d" -d "5 days ago")" -v DATE4="$(date +"%Y%m%d" -d "4 days ago")" -v DATE3="$(date +"%Y%m%d" -d "3 days ago")" -v DATE2="$(date +"%Y%m%d" -d "2 days ago")" -v DATE1="$(date +"%Y%m%d" -d "1 days ago")" -v DATE="$(date +"%Y%m%d")" '$5 ~ /"^$DATE7"/"^$DATE6"/"^$DATE5"/"^$DATE4"/"^$DATE3"/"^$DATE2"/"^$DATE1"/"^$DATE"/ {print $0}' test awk: $5 ~ /"^$DATE7"/"^$DATE6"/"^$DATE5"/"^$DATE4"/"^$DATE3"/"^$DATE2"/"^$DATE1"/"^$DATE"/ {print $0} awk: ^ syntax error But its not working, how can i fix it ? |
It will help if you wrap your code in [code] [/code] tags so the indentation is preserved. But the double quotes are not needed and the syntax for variables is just the variable name, no dollar sign needed in front. This should be closer:
Code:
awk -F, \ |
Using grep
Code:
for i in {7..0}; do |
Quote:
awk -F, \ > -v DATE7="$(date +"%Y%m%d" -d "7 days ago")" \ > -v DATE6="$(date +"%Y%m%d" -d "6 days ago")" \ > -v DATE5="$(date +"%Y%m%d" -d "5 days ago")" \ > -v DATE4="$(date +"%Y%m%d" -d "4 days ago")" \ > -v DATE3="$(date +"%Y%m%d" -d "3 days ago")" \ > -v DATE2="$(date +"%Y%m%d" -d "2 days ago")" \ > -v DATE1="$(date +"%Y%m%d" -d "1 days ago")" \ > -v DATE="$(date +"%Y%m%d")" \ '$5 ~ DATE7 || $5 ~ DATE6 || $5 ~ DATE5 || $5 ~ DATE4 || $5 ~ DATE3 || $5 ~ DATE2 || $5 ~ DATE1 || $5 ~ DATE {print $0}' test ABCDE1020000012,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,2017122583620Z ABCDE1020000011,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171226183620Z ABCDE1020000008,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171224183620Z ABCDE1020000001,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171223183620Z ABCDE0000189991,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171226183620Z |
Quote:
for i in {7..0}; do d="$d\|"$(date +"%Y%m%d" -d "$i days ago"); done | grep ${d:2} test ABCDE1020000012,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,2017122583620Z ABCDE1020000011,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171226183620Z ABCDE1020000008,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171224183620Z ABCDE1020000001,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171223183620Z ABCDE0000189991,FALSE,SGSNYA101.mme.epc.mncXXX.mccYYY.3gppnetwork.org,mme.epc.mncXXX.mccYYY.3gppnetw ork.org,20171226183620Z but i want to make it with awk and Turbocapitalist gave the right command. Thanks for your suggestions :) |
All times are GMT -5. The time now is 04:16 PM. |