Modify sed script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Modify sed script
# 1  
Old 08-17-2011
Modify sed script and print to csv

I'm trying to take out strings from log files and add them to a csv.

For example, in the directory now, there are 2 log files. I get the following results:
Code:
sed -e '/custodian/b' -e '/packaged by/b' -e '/package name/b' -e '/Total Data (MB) Read/b' -e '/Begin Time/b' -e d *
     packaged by = Mike Vick
     custodian = Billy Johnson
     package name = Mike_Vick.bat
Total Data (MB) Read: 11.82
Begin Time: 6/13/2011 10:29:27 AM
     packaged by = James Smith
     custodian = Paul Wall
     package name = James_Smith_2011.bat
Total Data (MB) Read: 552.97
Begin Time: 7/18/2011 11:45:52 AM

I need the output to be:
Code:
"Vick, Mike","Johnson, Billy","Mike_Vick.bat","11.82","6/13/2011"
"Smith, James","Wall, Paul","James_Smith_2011.bat","552.97","7/18/2011"

Need to:
  • Only print after "= " or ": "
  • Change "Mike Vick" to "Vick, Mike"
  • Remove time stamp after MM/DD/YYYY

Last edited by chipperuga; 08-17-2011 at 05:08 PM..
# 2  
Old 08-17-2011
Here is the first part - one line per extracted data:
Code:
sed -e 's/.*= //' -e 's/.*: //' -e 's/\(.*\) ..:..:.*/\1/' Inp_File | paste - - - - -

From there you can work on a code to place double quotes and the commas.
# 3  
Old 08-17-2011
I don't understand your instructions.
# 4  
Old 08-17-2011
Pipe your sed command to this and see if it works, remove the /tmp/90 since I tested it against static test data from /tmp/90. Since you are piping output from your sed command, we don't need that. If the pipe to below does not work, it may be 2 steps for you, dump output from your sed command to a temp file like /tmp/90 and run the below against that temp file.

Code:
cut -d"=" -f 2 /tmp/90|awk 'BEGIN {ORS=" "} !/^Total/{ if ($0 !~ "Time"){ print $2 "," $1 }} /Total/ {print $5} /Begin/ { print $3 "\n"}'

I used /tmp/90 as my input file, the contents on my /tmp/90 are :

Quote:
$ cat /tmp/90
packaged by = Mike Vick
custodian = Billy Johnson
package name = Mike_Vick.bat
Total Data (MB) Read: 11.82
Begin Time: 6/13/2011 10:29:27 AM
packaged by = James Smith
custodian = Paul Wall
package name = James_Smith_2011.bat
Total Data (MB) Read: 552.97
Begin Time: 7/18/2011 11:45:52 AM
The output from my command above is:
Code:
$ cut -d"=" -f 2 /tmp/90|awk 'BEGIN {ORS=" "} !/^Total/{ if ($0 !~ "Time"){ print $2 "," $1 }} /Total/ {print $5} /Begin/ { print $3 "\n"}'
Vick,Mike Johnson,Billy ,Mike_Vick.bat 11.82 6/13/2011
 Smith,James Wall,Paul ,James_Smith_2011.bat 552.97 7/18/2011

# 5  
Old 08-17-2011
@chipperuga, I modified shell_life's code as follows:

Code:
sed -e 's/.*= \(.*\) \(.*\)/"\2, \1",/' -e 's/.*= \(.*\)/"\1",/' -e 's/.*: \(.*\)/"\1",/' -e 's/"\(.*\) ..:..:.*/"\1"/' file2 | paste - - - - -

That should give you the quotes and commas. If you compare the diff between the two, you should get some understanding of what is going on. Hope this helps.

- GP
# 6  
Old 08-17-2011
@g.pi, I'm still not able to follow.
# 7  
Old 08-17-2011
Quote:
Originally Posted by chipperuga
I don't understand your instructions.
Did you at least ran what I suggested?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Using awk and sed to modify a create sql script

Hi, I have a file which contains the following data claim_src|clm_id,typ_id pat_src|pat_id prov_src|prov_id,clm_id,prov_name The first field is table name and second field is primary keys of the table Now I have three files which contain ddl of each table. clam_src.sql... (4 Replies)
Discussion started by: wahi80
4 Replies

2. Shell Programming and Scripting

Modify xml using sed or awk

Hi All, I want to modify(changing the status from "on" to "off" status of Stage-element value from the below xml file using sed or awk: File Name: global.xml <?xml version="1.0" encoding="UTF-8"?> <config> <widget> <name>HTTP-POOL</name> <attributes> ... (5 Replies)
Discussion started by: wamqemail2
5 Replies

3. Shell Programming and Scripting

Modify text file using sed

Hello all, I have some text files I need to do the following on: Delete banner page (lines 1-56) --I am doing this using sed Remove ^M --I am doing this using vi Remove trailer page --this can vary based on the contents of the file, it usually starts with *************************** I am... (5 Replies)
Discussion started by: jeffs42885
5 Replies

4. Shell Programming and Scripting

Modify the file with awk,sed or perl

Hi All, I need help from any of you.Would be so thankful for your help. I/P DDDD,1045,161,1557,429,1694,800,1911,1113,2460,1457,2917> 1609,3113,1869,3317,2732,3701,3727,4132,5857,5107> 9004,6496 DDDD,1125,157,1558,429,1694,800,1911,1117,2432,1444,2906>... (2 Replies)
Discussion started by: Indra2011
2 Replies

5. Shell Programming and Scripting

How to use sed to modify a line above or below matching pattern?

I couldn't figure out how to use sed or any other shell to do the following. Can anyone help? Thanks. If seeing a string (e.g., TODAY) in the line, replace a string in the line above (e.g, replace "Raining" with "Sunny") and replace a string in the line below (e.g., replace "Reading" with... (7 Replies)
Discussion started by: sprinner
7 Replies

6. Shell Programming and Scripting

Sed or Awk for modify hour in a crontab AIX

Hi, I want to modifiy the hour in the crontab AIX 5.3 for this line: Input: 00 22 * * * /outillage/script_exploit/bin/SavOffline.ksh > /dev/null 2>&1 Output: 30 20 * * * /outillage/script_exploit/bin/SavOffline.ksh > /dev/null 2>&1 With the awk or sed function through a ssh -q... (1 Reply)
Discussion started by: khalidou13
1 Replies

7. Shell Programming and Scripting

sed: How to modify files in a complex way

Hello, I am new to sed and hope that someone can help me with the following task. I need to modify a txt file which has format like this: xy=CreateDB|head.queue|head.source|head.definition|rtf.edit|rtf.task|rft.cut abc|source|divine|line4|5|true into something like: head.queue=abc... (19 Replies)
Discussion started by: pinkypunky
19 Replies

8. UNIX for Dummies Questions & Answers

How to use sed modify specific lines

Could anybody tell me how I can use sed to modify lines following specific lines? the file is as following: "TEST/SI1573.lab" 3670 8920 h# 8920 9530 hh 9530 10694 ih . "TEST/DR1/FAKS0/SI2203.lab" 9730 9580 h# 9580 9840 dh 9840 10652 ix 10652 11997 r ........ I want to modify the... (5 Replies)
Discussion started by: Jenny.palmy
5 Replies

9. Shell Programming and Scripting

modify and use awk sed program

The following awk script creates a file b.dat. awk '{print substr($0,1,27),substr($2,index($2,"_")+1)," ",substr($0,49)}' a.dat > b.dat I need this script to be modified to also sum $3 values by distinct $1 and $2 fields. Current file W2_2009275 2 8 W2_2009275 2 7 W1_2009275 1... (3 Replies)
Discussion started by: mnnarendra
3 Replies

10. UNIX for Dummies Questions & Answers

sed modify problem in script

I am having problems with the following "sed" command only when it is issued within a bash script. #!/bin/bash cat config.xml | sed -e 's/yes/no/g' > newconfig.xml When I enter this command from the command line it works like a charm, but when run in a script as shown it "zero's out" my... (2 Replies)
Discussion started by: darthur
2 Replies
Login or Register to Ask a Question