Grabbing a sub section of a file between 2 specific values


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Grabbing a sub section of a file between 2 specific values
# 1  
Old 03-04-2020
Grabbing a sub section of a file between 2 specific values

Hi. I have a file that contains one continuous line of output which is made up of multiple repeating sections of code with just some of the values being unique. No spaces and no carriage returns.

Effectively the file could be divided up into multiple repeating blocks of info. I need to grab the sub section of the line around one of these values.
So, I have unique value for HostName (test12-42213.devserver.com) and I need all the info from that value until the first occurrence of a non-unique delimiter called "EndTime".

I have tried the following but it's not filtering anything out. It only seems to work on simple strings:
Code:
cat example.out | sed 's/.*"test12-42213.devserver.com"\(.*\)"EndTime"/\1/'

An example of the file with one continuous line would be (no spaces and no carriage returns):
Code:
Translation,occurs,if,-d,is,not,given,and,both,SET1,and,SET2,appear.-tmaybeusedonlywhentranslating.SET2,is,extended,to,length,of"SET1",
by,repeating,its,last,character:as:necessary,"HostName":"test12-42213.devserver.com",Excess_characters_of,SET2,are,ignored.Only[:lower:]and[:upper:]are,guaranteed,
to,expand,in,ascending:order;"EndTime":null}Translation,occurs,if,-d,is,not,given,and,both,SET1,and,SET2,appear.-tmaybeusedonlywhentranslating.
SET2,is,extended,to,length,of"SET1",by,repeating,its,last,character:as:necessary,"HostName":"test99-9999.devserver.com",Excess_characters_of,SET2,are,ignored.
Only[:lower:]and[:upper:]are,guaranteed,to,expand,in,ascending:order;"EndTime":null}

# 2  
Old 03-04-2020
Unix utilities typically need a linefeed at the end of the line. You could try awk:

Code:
awk '/test12-42213.devserver.com/,/EndTime/; END{printf "\n"}' RS=, ORS=, file

or
Code:
awk -v s="test12-42213.devserver.com" '$0~s,/EndTime/; END{printf "\n"}' RS=, ORS=, file

Does that produce output?
This User Gave Thanks to Scrutinizer For This Post:
# 3  
Old 03-04-2020
Yes it does indeed. Many many thanks for your help!
# 4  
Old 03-04-2020
Explanation

You're welcome..

Awk is somewhat unique in the sense that it allows you to specify a different record separator, other than the typical newline, which is absent in your case.

By specifying a different record separator, a comma in this case (RS=,), most awks are able to work around this. They thus chop up the line in smaller pieces, that do not exceed maximum line length, even though strictly speaking a file without a closing newline is not in Unix file format (either this is why the other utilities do not produce output, or because the line-length limit is exceeded*).

By also specify a comma as output separator (ORS=,) , the comma-separated records are printed in a single comma-separated line. The necessary closing newline character is then provided in the END section..

S.

--
* Strictly speaking, according to the standards, awk is not required to be able to interpret files without a closing newline terminator, but in my experience most, if not all versions do, as long as a different record separator is used and the resulting record length does not exceed line length limitations.

Last edited by Scrutinizer; 03-04-2020 at 03:56 PM..
This User Gave Thanks to Scrutinizer For This Post:
# 5  
Old 03-04-2020
Your own approach wasn't too far off, either. You just need to make sure it stops after the first occurrence of "EndTime" and suppresses the rest of the line. Like
Code:
sed 's/.*"test12-42213.devserver.com"\([^}]*\)"EndTime".*$/\1\n/' file
,Excess_characters_of,SET2,are,ignored.Only[:lower:]and[:upper:]are,guaranteed,to,expand,in,ascending:order;

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Get specific values from a file, help

Dear all, I have a specific problem that i cannot solve and I hope someone here can help me. :) I have two text files with one column of values. Example: File1: 67 94 95 . . File2 0.1 0.003 0.5 . . (3 Replies)
Discussion started by: Higgo
3 Replies

2. AIX

Vmstat fault section all values are 0

Hi all, Recently I facing problem with my AIX server. we experience slowness on performance. there are some application installed in this server such as : Oracle 10g database, control-m client agent, and some monitoring tools. when we're facing the problem we're noticing that vmstat value a... (7 Replies)
Discussion started by: Arief Winanto
7 Replies

3. Shell Programming and Scripting

Adding a lines to specific section of the file.

Hello, I have to a add 2 lines to /etc/sudoers file under this section below, can someone please suggest script to add these two lines when execute this remotely on to a multiple servers. before ## Allow root to run any commands anywhere root ALL=(ALL) ALL After ## Allow root... (2 Replies)
Discussion started by: bobby320
2 Replies

4. Shell Programming and Scripting

using awk to get specific section of lines in logs

i have a log file that has the date and time that looks like this: Wed Jun 28 15:46:21 2012 test failed tailed passed passed not error panic what we want to focus on is the first 5 columns because they contain the date and time. the date and time can be anywhere on the line. in this... (6 Replies)
Discussion started by: SkySmart
6 Replies

5. Shell Programming and Scripting

parsing filename and grabbing specific string patterns

Hi guys...Wow I just composed a huge post and it got erased as I was logged out automatically Anyways I hope someone can help me out here. So the task I'm working on is like this I have a bunch of files that I care about sitting in a directory say $HOME/files Now my job is to go and loop... (6 Replies)
Discussion started by: rukasetsuna
6 Replies

6. Shell Programming and Scripting

Extract section of file based on word in section

I have a list of Servers in no particular order as follows: virtualMachines="IIBSBS IIBVICDMS01 IIBVICMA01"And I am generating some output from a pre-existing script that gives me the following (this is a sample output selection). 9/17/2010 8:00:05 PM: Normal backup using VDRBACKUPS... (2 Replies)
Discussion started by: jelloir
2 Replies

7. Shell Programming and Scripting

to extract specific values twice in a file

Hi Friends, I have a file with the following values.. xyz.txt,12345.xml abc.txt,04567.xml cde.txt,12134.xml I would like to extract all the 2nd column values twice as shown in the example like 12345,12345.xml 04567,04567.xml 12134,12134.xml Please advice!! In the formus one of... (7 Replies)
Discussion started by: techmoris
7 Replies

8. Shell Programming and Scripting

grabbing specific column perl

Alright, I'm new to Perl so be gentle. Given the following script: ---- open(file, "<file.txt"); @lines = <file>; close(file); $var = print $lines; ---- So I'm printing line 18 of the file "file.txt". I now want the 5th column, minus the forward slash. The line looks like this: ... (2 Replies)
Discussion started by: wxornot
2 Replies

9. Shell Programming and Scripting

How to read a specific section and modify within

Hi, I am n00b to shell scripting and I am learning Ksh, sed and awk. I have a requirement and need your help. 1) How to read a specific section of a file. I have a file and I want to read the contents between say "Page Number:1" to "End of Page 1" 2) Within the section of the file that was... (2 Replies)
Discussion started by: kn.naresh
2 Replies

10. UNIX for Dummies Questions & Answers

finding specific values in a within a file

Hi everyone, Can anyone guide me on how to search through a huge file and look on specific column and if it finds a discrepancy on that column that does not conform to the specified criteria, ie (1) Numeric and (3) alpha chars F123 or G333..etc, etc! then idientify it and redirect... (3 Replies)
Discussion started by: Gerry405
3 Replies
Login or Register to Ask a Question