Hello All,
I have a file which is having below type of data,
Jul 19 2011 | 123456
Jul 19 2011 | 123456
Jul 20 2011 | 123456
Jul 20 2011 | 123456
Here I wanted to grep for date pattern as below, so that it should only grep "Jul 20" OR "Jul 20" pattern only,
Jul 20 ---> Single space in between Month & Date
Jul 20 ---> Double space between Month & Date
Also I want to pass the Mon & DD through variables.
Plese advise how o do this.
panyam
2
mo="Jul"
da=20
awk -v d=$da -v m=$mo '$1==m && $2==d' input_file
Hi Thanks for your revert, I tried but this not working.
I wanted to search for below pattern,
Jul 20 ---> Single space in between Month & Date
Jul 20 ---> Double space between Month & Date
yazu
4
???
month=Jul
date=20
grep "$month $date"
OR with 2 spaces:
grep "$month $date"
If the below does not work, post the required output format.
VAR="Jul"
VAR2="20"
sed '/'"${VAR}"' *'"${VAR2}"'/!d' inputfile
There is no output, please see below,
bash-2.03$ VAR="Jul"
bash-2.03$ VAR2="20"
bash-2.03$ sed '/^'"${VAR}"' *'"${VAR2}"'/!d' test.txt
bash-2.03$ echo $?
0
Please advise.
panyam
7
avalon:/disk3/upat/SCRIPTS>cat input_file
Jul 19 2011 | 123456
Jul 19 2011 | 123456
Jul 20 2011 | 123456
Jul 20 2011 | 123456
Jul 20 2011 | 1111111
avalon:/disk3/upat/SCRIPTS>awk -v d=$d -v m=$m '$1==m && $2==d' input_file
Jul 20 2011 | 123456
Jul 20 2011 | 123456
Jul 20 2011 | 1111111
Post, the output you are getting and OS version.
Please see output below,
bash-2.03$ uname -a
SunOS test 5.8 Generic_127721-03 sun4u sparc SUNW,Sun-Fire-15000
bash-2.03$ awk -v d=$DD -v m=$MM '$1==m && $2==d' input_file
awk: syntax error near line 1
awk: bailing out near line 1
bash-2.03$ nawk -v d=$DD -v m=$MM '$1==m && $2==d' input_file
bash-2.03$ cat input_file
Jul 19 2011 | 14145673
Wed Jul 20 10:58:33 EDT 2011 | 14171345
Wed Jul 20 14:15:16 EDT 2011 | 14156856
Wed Jul 20 17:26:27 EDT 2011 | 14147096
Wed Jul 20 23:04:24 EDT 2011 | 14182311
Wed Jul 20 23:05:10 EDT 2011 | 14182304
Wed Jul 20 23:42:02 EDT 2011 | 14190892
Jul 19 2011 | NULL
Wed Jul 20 10:58:33 EDT 2011 | NULL
Wed Jul 20 14:15:16 EDT 2011 | NULL
Wed Jul 20 17:26:27 EDT 2011 | NULL
Wed Jul 20 23:04:24 EDT 2011 | NULL
Wed Jul 20 23:05:10 EDT 2011 | NULL
Wed Jul 20 23:42:02 EDT 2011 | NULL
---------- Post updated at 08:45 PM ---------- Previous update was at 08:42 PM ----------
Please see the output below,
bash-2.03$ uname -a
SunOS test 5.8 Generic_127721-03 sun4u sparc SUNW,Sun-Fire-15000
bash-2.03$ awk -v d=$DD -v m=$MM '$1==m && $2==d' input_file
awk: syntax error near line 1
awk: bailing out near line 1
bash-2.03$ nawk -v d=$DD -v m=$MM '$1==m && $2==d' input_file
bash-2.03$ echo $?
0
bash-2.03$ cat input_file
Jul 19 2011 | 14145673
Wed Jul 20 10:58:33 EDT 2011 | 14171345
Wed Jul 20 14:15:16 EDT 2011 | 14156856
Wed Jul 20 17:26:27 EDT 2011 | 14147096
Wed Jul 20 23:04:24 EDT 2011 | 14182311
Wed Jul 20 23:05:10 EDT 2011 | 14182304
Wed Jul 20 23:42:02 EDT 2011 | 14190892
Jul 19 2011 | NULL
Wed Jul 20 10:58:33 EDT 2011 | NULL
Wed Jul 20 14:15:16 EDT 2011 | NULL
Wed Jul 20 17:26:27 EDT 2011 | NULL
Wed Jul 20 23:04:24 EDT 2011 | NULL
Wed Jul 20 23:05:10 EDT 2011 | NULL
Wed Jul 20 23:42:02 EDT 2011 | NULL
panyam
9
Oh God,
You changed the order!!!
try
MM="Jul"
DD=20
nawk -v d=$DD -v m=$MM '$2==m && $3==d' input_file
1 Like
Sorry ... I just overlooked the filed in my file. Thanks a lot !!! It worked perfectly.
I have used with "||" as well to search for
"$1 && $2" and "$2 && $3"
bash-2.03$ nawk -v d=$DD -v m=$MM '$2==m && $3==d || $1==m && $2==d' input_file
Wed Jul 20 10:58:33 EDT 2011 | 14171345
Wed Jul 20 14:15:16 EDT 2011 | 14156856
Wed Jul 20 17:26:27 EDT 2011 | 14147096
Wed Jul 20 23:04:24 EDT 2011 | 14182311
Wed Jul 20 23:05:10 EDT 2011 | 14182304
Wed Jul 20 23:42:02 EDT 2011 | 14190892
Wed Jul 20 10:58:33 EDT 2011 | NULL
Wed Jul 20 14:15:16 EDT 2011 | NULL
Wed Jul 20 17:26:27 EDT 2011 | NULL
Wed Jul 20 23:04:24 EDT 2011 | NULL
Wed Jul 20 23:05:10 EDT 2011 | NULL
Wed Jul 20 23:42:02 EDT 2011 | NULL
Jul 20 2011 | 14190892
Jul 20 2011 | 14182304
Thanks again for your help.