Search for Multiple strings in a given date range and print the Group if they exists


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Search for Multiple strings in a given date range and print the Group if they exists
# 1  
Old 10-24-2019
Search for Multiple strings in a given date range and print the Group if they exists

Hi,

I am Searching for Multiple strings in a given date range and print the Group if they exists. the below is the format:

Code:
[2019/10/16 13:22:47.961][INFO ][ABCDDDDDDD]
-------------------------------------------------------------------------------------------------------------------------
ID: FIRST ID
MESSAGE: Event Message received.
-------------------------------------------------------------------------------------------------------------------------
CONTEXT: {
  "ID" : 1,
  "event" : "something",
  COMMON_TEXT: COMMON
    "valid" : true
}
*************************************************************************************************************************
[2019/10/16 13:23:00.816][INFO ][ABCDDDDDEEEEEEE]
-------------------------------------------------------------------------------------------------------------------------
ID: SECOND ID
MESSAGE: Event Message received.
-------------------------------------------------------------------------------------------------------------------------
CONTEXT: {
  "ID" : 1,
  "event" : "One More thing",
  COMMON_TEXT: COMMON
    "valid" : true
}
*************************************************************************************************************************
[2019/10/16 13:33:00.816][INFO ][ABCDDDDDEEFFFFFFFFFFFFFEEE]
-------------------------------------------------------------------------------------------------------------------------
ID: THIRD ID
MESSAGE: Event Message received.
-------------------------------------------------------------------------------------------------------------------------
CONTEXT: {
  "ID" : 1,
  "event" : "Second thing",
  COMMON_TEXT: COMMON
    "valid" : False
}
*************************************************************************************************************************

SED COMMAND
Code:
sed -n '/2019\/10\/23 12:2[0-2]/{:a;N;/2019\/10\/23 12:3[0-3]/!ba; /FIRST ID/p}'  logfile

- This is working fine, but I wanted to give one more search criteria along with FIRST ID in the group (like something) and if both exists print the group otherwise skip the group.

AWK Command
Code:
awk 'substr($1,2,11)>="2019\/10\/23" && substr($1,2,11)<="2019\/10\/23" && substr($2,1,8)>="12:22:00" && substr($2,1,8)<="12:33:00"' logfile

I am getting only first line with the dates with this group.

I am not a unix expert, can someone please help on this.

Old 10-25-2019
Please be specific and clearly state the exact strings you wish to match; and also post your desired output exactly.
# 3  
Old 10-25-2019
Thanks for your reply, I am interested in
  • - first and third block (in the date and time range)
  • - searching for the text “ ‘First Id', ‘Something', ‘Third Id', ‘Second thing' ”¯. And display that group of text like below

Code:
2019/10/16 13:22:47.961][INFO ][ABCDDDDDDD]
-------------------------------------------------------------------------------------------------------------------------
ID: FIRST ID
MESSAGE: Event Message received.
-------------------------------------------------------------------------------------------------------------------------
CONTEXT: {
  "ID" : 1,
  "event" : "something",
  COMMON_TEXT: COMMON
    "valid" : true
}
2019/10/16 13:33:00.816][INFO ][ABCDDDDDEEFFFFFFFFFFFFFEEE]
-------------------------------------------------------------------------------------------------------------------------
ID: THIRD ID
MESSAGE: Event Message received.
-------------------------------------------------------------------------------------------------------------------------
CONTEXT: {
  "ID" : 1,
  "event" : "Second thing",
  COMMON_TEXT: COMMON
    "valid" : False
}

# 4  
Old 10-25-2019
Code:
sed ':1;N;/\*/!b1;/FIRST\|THIRD/!d'  logfile

--- Post updated at 17:11 ---

Code:
sed -n '/2019\/10\/16/{:1;N;/}/!b1;/FIRST\|THIRD/p}'  logfile


Last edited by nezabudka; 10-25-2019 at 11:19 AM..
This User Gave Thanks to nezabudka For This Post:
# 5  
Old 10-25-2019
None of the dates nor even times in your data samples will match the regexes you posted. Assuming all records will be terminated by a } , try (with your sample data in post #1)

Code:
sed -n '/2019\/10\/16 13:[23][0-3]/{:a;N;/}/!ba; /\(FIRST\|THIRD\) ID/p}'  file


EDIT: Or
Code:
sed -n ' /2019\/10\/16 13:[23][0-3]/, /}/ H; /}/ {s/.*//; x; /\(FIRST\|THIRD\) ID/p; };'  file


Last edited by RudiC; 10-25-2019 at 11:35 AM..
This User Gave Thanks to RudiC For This Post:
# 6  
Old 10-28-2019
@nezabudka

Thanks for your reply. This helps me a lot. I wanted to try in a specific time period and date range because I may get duplicates rows for every 30 minutes. When I am trying in a date range and searching only for THIRD, first two blocks (SECOND ID and THIRD ID) are also printing. Here is my query. Can you check what is the mistake I am doing here.

Code:
sed -n '/2019\/10\/16 13:22:[4-5][1-9]/ {:a;N;/2019\/10\/16 13:33:[0-1][0-9]/!ba; /THIRD/p}'  logfile

Moderator's Comments:
Mod Comment
Please use code tags when posting data and code samples!

Last edited by vgersh99; 10-28-2019 at 05:45 PM.. Reason: code tags, please!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Search file and print everything except multiple search terms

I'm trying to find a way to search a range of similar words in a file. I tried using sed but can't get it right:sed 's/\(ca01\)*//'It only removes "ca01" but leaves the rest of the word. I still want the rest of the information on the lines just not these specific words listed below. Any... (3 Replies)
Discussion started by: seekryts15
3 Replies

2. Shell Programming and Scripting

Search between two search strings and print the value

Based on the forums i have tried with grep command but i am unable to get the required output. search this value /*------ If that is found then search for temp_vul and print and also search until /*------- and print new_vul Input file contains: ... (5 Replies)
Discussion started by: onesuri
5 Replies

3. Shell Programming and Scripting

Search & Replace: Multiple Strings / Multiple Files

I have a list of files all over a file system e.g. /home/1/foo/bar.x /www/sites/moose/foo.txtI'm looking for strings in these files and want to replace each occurrence with a replacement string, e.g. if I find: '#@!^\&@ in any of the files I want to replace it with: 655#@11, etc. There... (2 Replies)
Discussion started by: spacegoose
2 Replies

4. Shell Programming and Scripting

awk strings search + print next column after match

Hi, I have a file filled with search strings which have a blank in between and look like this: S. g. Ehr. o. Jg. v. d. Chijs g. Ehr. Now i would like to search for the strings and it also shall return the next column after the match. awk -v FILE="search_strings.txt" 'BEGIN {... (10 Replies)
Discussion started by: sdf
10 Replies

5. Shell Programming and Scripting

Search on date range of file based on user input

Hello I would like to ask for help with a script to search a directory that contains many log files and based on a users input after being prompted, they enter a date range down to the hour which searches the files that contain that range. I dont know how to go about this. I am hoping that the... (5 Replies)
Discussion started by: lostincashe
5 Replies

6. Shell Programming and Scripting

Search for a specific data in a file based on a date range

Hi, Currently I am working on a script to automate the process of converting the log file from binary into text format. To achieve this, partly I am depending on my application’s utility for this conversion and the rest I am relying on shell commands to search for directory, locate the file and... (5 Replies)
Discussion started by: svajhala
5 Replies

7. Shell Programming and Scripting

Search, group , print count

hi All, need help. have a file like below A, error in 123 B, log files are present A, error in 23444 B, log files are present A, move to next line C, matching messages -- expected output-- A , count =2 , error in * A , count =1 , move to next line B , count =2 , log files are present... (2 Replies)
Discussion started by: arun1401
2 Replies

8. Shell Programming and Scripting

Search multiple Strings in a File

Hi I want to search multiple strings in a file . But the search should start with "From" Keyword and end with before "Where" keyword. Please suggest me. Thanks (2 Replies)
Discussion started by: sboss
2 Replies

9. Shell Programming and Scripting

Search files between a date range

Hi people A newbie here, thrown into the deep end. I want to select the group of files with in a range of dates and perform some operation on it. Are there inbuild date libraries i can use? I did read thru the old posts on this topic. Couldnt get much idea :(, basically want to know how I... (7 Replies)
Discussion started by: zcanji
7 Replies

10. UNIX for Dummies Questions & Answers

Need to print file names in a certain date range using ls

I need to list only file names of a specific date from the command ls -lt. :confused: (2 Replies)
Discussion started by: Shamwari
2 Replies
Login or Register to Ask a Question