Prepend first line of section to each line until the next section header


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Prepend first line of section to each line until the next section header
# 1  
Old 10-23-2011
Prepend first line of section to each line until the next section header

I have searched in a variety of ways in a variety of places but have come up empty.

I would like to prepend a portion of a section header to each following line until the next section header. I have been using sed for most things up until now but I'd go for a solution in just about anything-- awk, perl, python, tr, cat, you name it.

The files look like this, more or less:

file01.txt:
Code:
CUSTOMER: 233 IAMTHEBESTCUSTOMER
"ITEM32" "23" "UNITS" "20111003"
"ITEM106" "2" "CASES" "20111003"
CUSTOMER: 1024 CUSTOMERBESTISME
"ITEM32" "13" "CASES" "20111010"
"ITEM22" "12" "LB" "20111010"

And I'm trying to get to:
Code:
233 "ITEM32" "23" "UNITS" "20111003"
233 "ITEM106" "2" "CASES" "20111003"
1024 "ITEM32" "13" "CASES" "20111010"
1024 "ITEM22" "12" "LB" "20111010"

I read up on hold patterns in sed but I couldn't wrap my mind around them, was I barking up the wrong tree?

Last edited by Franklin52; 10-24-2011 at 03:56 AM.. Reason: Please use code tags, thank you
# 2  
Old 10-23-2011
Code:
awk '/CUSTOMER:/{str=$2;next}{print str,$0}' file01.txt

This User Gave Thanks to rdcwayx For This Post:
# 3  
Old 10-24-2011
Does the $2 mean the second field delimited by spaces? That sure seems handy

---------- Post updated 2011-10-24 at 10:09 AM ---------- Previous update was 2011-10-23 at 07:08 PM ----------

That solution worked great, thank you! And such a quick reply too, I really appreciate it.
# 4  
Old 10-24-2011
Quote:
Originally Posted by pagrus
Does the $2 mean the second field delimited by spaces? That sure seems handy
Yes...
$1 - first field
$2 - second field and so on

Default field separator is space. You can change it using -F option.

Code:
echo "1:2:3:4:5" | awk -F":" '{print $2}' 
2

--ahamed
# 5  
Old 10-24-2011
Quote:
Originally Posted by ahamed101
Yes...
$1 - first field
$2 - second field and so on

Default field separator is space. You can change it using -F option.

Code:
echo "1:2:3:4:5" | awk -F":" '{print $2}' 
2

--ahamed
Fields are normally separated by whitespace sequences (spaces, TABs, and newlines).
# 6  
Old 10-24-2011
Thank you both. I have been banging my head against the wall on this one for literally weeks. I had a feeling it was terribly simple but I couldn't figure it out for the life of me.

Is there something I should have been searching for? I tried "prepend" "section" "header", etc etc but only came up with near misses.
# 7  
Old 10-24-2011
your need provide the source data and the expect output again for your new problem.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to change file section into each line?

Hi Gurus, I have below file which has different sections, need to move the sections to beginning of the each record. original file aaa bbb ccc ddd eee fff output file. aaa bbb ccc ddd eee fff (6 Replies)
Discussion started by: green_k
6 Replies

2. Shell Programming and Scripting

Grep or print each section of a file on one line with a separator

I can obtain information from itdt inventory command however it display as below, I'd like to print each entity on one line but seperated by : the file is something like and each section ends with Volume Tag Drive Address 256 Drive State ................... Normal ASC/ASCQ... (3 Replies)
Discussion started by: gefa
3 Replies

3. Shell Programming and Scripting

Print the first n line in each section

Hi, i have a file like this: ... 11111111 22222222 33333333 # 4444444 5555555 6666666 7777777 # ... i want just print the 2 first line between each section (each section is separated with "#"). so desired output would be like this: ... 11111111 22222222 (3 Replies)
Discussion started by: saeed.soltani
3 Replies

4. Shell Programming and Scripting

Format Parts of Multiline Section to Single Line

Hello, I have an input file that I need formatted. I was hoping I could use bash to get this done. Title: Kitchen Blender Washer Dishes Title: Bathroom Toilet Sink Title: Bedroom Bed Desired output would be similar to Results("Blender","Washer","Dishes") (1 Reply)
Discussion started by: jl487
1 Replies

5. Shell Programming and Scripting

Parse configuration file & add line in particular section

Greetings, I recently built a replicated DRBD, Heartbeat, & iSCSI Target Initiator storage server on Ubuntu 10.04 to offer shared storage to server Vmware ESX and Microsoft Clusters. Everything works flawlessly, however I wanted to make a script to create, remove, grow volumes to offer ESX... (6 Replies)
Discussion started by: Aeudian
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

Duplicate Line Report per Section

I've been working on a script (/bin/sh) in which I have requested and received help here (in which I am very grateful for!). The client has modified their requirements (a tad), so without messing up the script to much, I come once again for assistance. Here are the file.dat contents: ABC1... (4 Replies)
Discussion started by: petersf
4 Replies

8. Shell Programming and Scripting

how to retreive certain section of the line

Hi I am using "grep" command to get certain pattern out of the file: PNUM=34 $ grep -w "#${PNUM}" myfile #34 * 2297 * 410 * 964 * * 4352 $ Is there a way to retrieve the section of the above output without #34 so the output would look like this:... (3 Replies)
Discussion started by: aoussenko
3 Replies

9. Shell Programming and Scripting

Remove certain section from the line

A typical line looks like this... ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=129 COMMENT='Compiled E-Mails';I want to remove DEFAULT CHARSET= and COLLATE= after resetting AUTO_INCREMENT=0 I do not want to change the engine and comment. (7 Replies)
Discussion started by: shantanuo
7 Replies

10. UNIX for Dummies Questions & Answers

help find a section line of a file

hi, I have a 20 line file. I need a command which will brinf back a specific line based upon the line number I enter. e.g. the file looks like this and is called file1 jim is a man john is a woman james is a man wendy is a woman lesley is a woman i want a command that will... (4 Replies)
Discussion started by: sureshy
4 Replies
Login or Register to Ask a Question