Grep, then format then prepare a string


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grep, then format then prepare a string
# 1  
Old 10-01-2008
MySQL Grep, then format then prepare a string

Hi

I have a file which is having line like below

Personal Unit=AU003 (Industrial Products Division),Plant=B00089,Departmant=D110

When ever i fine line starting sith Personal Unit and contains Plant Department I need to pick this line and format it like

Personal Unit=AU003
Plant=B00089
Departmant=D110
-->RAM:AU003:B00089Smilie110:system date:header of the file

i used sed

sed -e '/Personal Unit/{;h;s/^/#/p;x;}' -e '/Business Unit/{s/,Plant/\nPlant/g' -e 's/,Departmant/\nDepartmant/g'} FileName

But it is not fullfilling my all need
can any one please suggest
# 2  
Old 10-02-2008
With awk you can do something like:
Code:
awk -F, '/^Personal Unit=/&&/Plant/&&/Departmant/{sub("\(.*\)","")}{print $1 OFS $2 OFS $3}' OFS="\n" file

Regards
# 3  
Old 10-02-2008
Hi.

I had to change the sub like so, from quote to slash:
Code:
#!/usr/bin/env sh

# @(#) user1    Demonstrate 2-level parsing with awk.

#  ____
# /
# |   Infrastructure BEGIN

set -o nounset
echo

## The shebang using "env" line is designed for portability. For
#  higher security, use:
#
#  #!/bin/sh -

## Use local command version for the commands in this demonstration.

set +o nounset
echo "(Versions displayed with local utility \"version\")"
version >/dev/null 2>&1 && version "=o" $(_eat $0 $1) awk
set -o nounset

echo

FILE=${1-data1}
echo " Input file $FILE:"
cat $FILE

# Use nawk or /usr/xpg4/bin/awk on Solaris.

# |   Infrastructure END
# \
#  ---


echo
echo " Results from awk:"
awk -F, '
/^Personal Unit=/ && /Plant/ && /Departmant/ {sub(/\(.*\)/,"")}
        {print $1 OFS $2 OFS $3}
' OFS="\n" $FILE

exit 0

Producing:
Code:
% ./user1

(Versions displayed with local utility "version")
Linux 2.6.11-x1
GNU bash, version 2.05b.0(1)-release (i386-pc-linux-gnu)
GNU Awk 3.1.4

 Input file data1:
Personal Unit=AU003 (Industrial Products Division),Plant=B00089,Departmant=D110

 Results from awk:
Personal Unit=AU003
Plant=B00089
Departmant=D110

cheers, drl
# 4  
Old 10-02-2008
Another awk solution.
Code:
awk -F'[(|,|)]' '/^Personal/{printf "%s\n%s\n%s\n",$1,$4,$5}' file

# 5  
Old 10-03-2008
its not the exact output what we expected

Quote:
Originally Posted by drl
Hi.

I had to change the sub like so, from quote to slash:
Code:
#!/usr/bin/env sh
 
# @(#) user1    Demonstrate 2-level parsing with awk.
 
#  ____
# /
# |   Infrastructure BEGIN
 
set -o nounset
echo
 
## The shebang using "env" line is designed for portability. For
#  higher security, use:
#
#  #!/bin/sh -
 
## Use local command version for the commands in this demonstration.
 
set +o nounset
echo "(Versions displayed with local utility \"version\")"
version >/dev/null 2>&1 && version "=o" $(_eat $0 $1) awk
set -o nounset
 
echo
 
FILE=${1-data1}
echo " Input file $FILE:"
cat $FILE
 
# Use nawk or /usr/xpg4/bin/awk on Solaris.
 
# |   Infrastructure END
# \
#  ---
 
 
echo
echo " Results from awk:"
awk -F, '
/^Personal Unit=/ && /Plant/ && /Departmant/ {sub(/\(.*\)/,"")}
        {print $1 OFS $2 OFS $3}
' OFS="\n" $FILE
 
exit 0

Producing:
Code:
% ./user1
 
(Versions displayed with local utility "version")
Linux 2.6.11-x1
GNU bash, version 2.05b.0(1)-release (i386-pc-linux-gnu)
GNU Awk 3.1.4
 
 Input file data1:
Personal Unit=AU003 (Industrial Products Division),Plant=B00089,Departmant=D110
 
 Results from awk:
Personal Unit=AU003
Plant=B00089
Departmant=D110

cheers, drl


Hi I have multiple lines in this script. As soon as it fine the sentence immediatly it has to return the given out put. more over the below mentioned extra line it is not giving. I shall be very thankful if do so
# 6  
Old 10-03-2008
Quote:
Originally Posted by krishna.fuji
Hi I have multiple lines in this script. As soon as it fine the sentence immediatly it has to return the given out put. more over the below mentioned extra line it is not giving. I shall be very thankful if do so

[krishna@newtrans-test ~]$ cat ram1
Personal Unit=US003 (Industrial Products Division),Plant=B00089,Departmant=D110
This is my own
Personal Unit=US003 (Industrial/Products Division),Plant=B00089,Departmant=D110
We need to makfmkldfd
Personal Unit=US004 (Consumer Products Div)Plant=B00089,Departmant=D1119
mdkmvckldmldm
This is for some idea when junk of data in file
Personal Unit=US004 (Consumer Products Div),Plant=B00078,Departmant=D111
Personal Unit=US006 (Machinery Mfg Division),Plant=B00089,Departmant=D1188
Personal Unit=US007 (Adhesives Division) ,Plant=B00089,Departmant=D110
Personal Unit=US009 (Adhesives Division)
Personal Unit=US010 (Adhesives Division)

[krishna@newtrans-test ~]$ sed -e '/Personal Unit/{;h;s/^/#/p;x;}' -e '/Personal Unit/{s/,Plant/\nPlant/g' -e 's/,Departmant/\nDepartmant/g'} ram1
# Personal Unit=US003 (Industrial Products Division),Plant=B00089,Departmant=D110
Personal Unit=US003 (Industrial Products Division)
Plant=B00089
Departmant=D110
This is my own
# Personal Unit=US003 (Industrial/Products Division),Plant=B00089,Departmant=D110
Personal Unit=US003 (Industrial/Products Division)
Plant=B00089
Departmant=D110
We need to makfmkldfd
# Personal Unit=US004 (Consumer Products Div)Plant=B00089,Departmant=D1119
Personal Unit=US004 (Consumer Products Div)Plant=B00089
Departmant=D1119
mdkmvckldmldm
This is for some idea when junk of data in file
# Personal Unit=US004 (Consumer Products Div),Plant=B00078,Departmant=D111
Personal Unit=US004 (Consumer Products Div)
Plant=B00078
Departmant=D111
# Personal Unit=US006 (Machinery Mfg Division),Plant=B00089,Departmant=D1188
Personal Unit=US006 (Machinery Mfg Division)
Plant=B00089
Departmant=D1188
# Personal Unit=US007 (Adhesives Division) ,Plant=B00089,Departmant=D110
Personal Unit=US007 (Adhesives Division)
Plant=B00089
Departmant=D110
# Personal Unit=US009 (Adhesives Division)
Personal Unit=US009 (Adhesives Division)
# Personal Unit=US010 (Adhesives Division)
Personal Unit=US010 (Adhesives Division)
[krishna@newtrans-test ~]$

Along with this where ever i am splitting that row i need to get the combination of values
Like
--> RAM:US007:B00089Smilie110:systendate:fileheader
Conclusion is
wherever i find
Personal Unit=US007 (Adhesives Division) ,Plant=B00089,Departmant=D110
immediatly next line must be
Personal Unit=US007 (Adhesives Division) ,Plant=B00089,Departmant=D110
Personal Unit=US007 (Adhesives Division)
Plant=B00089
Departmant=D110

--> RAM:US007:B00089Smilie110:systendate:fileheader

and important is this script should touch only the line which are having combination of Personal Unit,Plant,Department in a single line
IF you can do this for me thanks alot

Last edited by krishna.fuji; 10-03-2008 at 03:29 AM..
# 7  
Old 10-03-2008
Quote:
Originally Posted by krishna.fuji
and important is this script should touch only the line which are having combination of Personal Unit,Plant,Department in a single line
Forget about fancy colors, and use code tags when you post code or data.
Code:
awk -F, '{if(/Personal Unit/&&/Plant/&&/Departmant/){printf "# %s\n%s\n%s\n%s\n",$0,$1,$2,$3}else{print}}' file

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Grep a sub-string from a string stored in a variable.

For example: I am grepping "Hello" from a file and there are 10 matches. So all ten lines with match will get stored into a variable($match). Now I want to ignore those lines which have "Hi" present in that. Currently I tried this: match = grep "Hello" file | grep -v "Hi" file But that's not... (2 Replies)
Discussion started by: pavan
2 Replies

2. Shell Programming and Scripting

Grep a string and count following lines starting with another string

I have a large dataset with following structure; C 0001 Carbon D SAR001 methane D SAR002 ethane D SAR003 propane D SAR004 butane D SAR005 pentane C 0002 Hydrogen C 0003 Nitrogen C 0004 Oxygen D SAR011 ozone D SAR012 super oxide C 0005 Sulphur D SAR013... (3 Replies)
Discussion started by: Syeda Sumayya
3 Replies

3. Shell Programming and Scripting

Grep string in files and list file names that contain the string

Hi, I have a list of zipped files. I want to grep for a string in all files and get a list of file names that contain the string. But without unzipping them before that, more like using something like gzcat. My OS is: SunOS test 5.10 Generic_142900-13 sun4u sparc SUNW,SPARC-Enterprise (8 Replies)
Discussion started by: apenkov
8 Replies

4. Shell Programming and Scripting

grep exact string from files and write to filename when string present in file

I am attempting to grep an exact string from a series of files within a directory and append that output to the filename when it is present in the file. I've been after this all day with no luck. Thanks for your help in advance :wall:. (4 Replies)
Discussion started by: JC_1
4 Replies

5. Shell Programming and Scripting

Grep a string from input file and delete next three lines including the line contains string in xml

Hi, 1_strings file contains $ cat 1_strings /home/$USER/Src /home/Valid /home/Review$ cat myxml <projected value="some string" path="/home/$USER/Src"> <input 1/> <estimate value/> <somestring/> </projected> <few more lines > <projected value="some string" path="/home/$USER/check">... (4 Replies)
Discussion started by: greet_sed
4 Replies

6. Shell Programming and Scripting

Grep a string and write a value to next line of found string

Hi, I have two variables x and y. i need to find a particular string in a file, a workflow name and then insert the values of x and y into the next lines of the workflow name. basically it is like as below wf_xxxxxx $$a= $$b= $$c= figo $$d=bentley i need to grep the 'wf_xxxx' and then... (6 Replies)
Discussion started by: angel12345
6 Replies

7. Shell Programming and Scripting

grep on string and printing line after until another string has been found

Hello Everyone, I just started scripting this week. I have no background in programming or scripting. I'm working on a script to grep for a variable in a log file Heres what the log file looks like. The x's are all random clutter xxxxxxxxxxxxxxxxxxxxx START: xxxxxxxxxxxx... (7 Replies)
Discussion started by: rxc23816
7 Replies

8. Shell Programming and Scripting

Grep for a string and then grep using a string from that result

Hello, Thanks in advance for the query. There is a log file abcd.log which has multible line like this. "hello1" , "hello2", "hello3" , "hello4" , "hello5" I want to grep for the lines which has "hello4" & "hello5" and use "hello2" to grep the same log file again. All these should... (8 Replies)
Discussion started by: kzenthil
8 Replies

9. UNIX for Dummies Questions & Answers

| help | unix | grep - Can I use grep to return a string with exactly n matches?

Hello, I looking to use grep to return a string with exactly n matches. I'm building off this: ls -aLl /bin | grep '^.\{9\}x' | tr -s ' ' -rwxr-xr-x 1 root root 632816 Nov 25 2008 vi -rwxr-xr-x 1 root root 632816 Nov 25 2008 view -rwxr-xr-x 1 root root 16008 May 25 2008... (7 Replies)
Discussion started by: MykC
7 Replies

10. Programming

how i prepare a c++ code(c code) for implementing my own protocol format

helo my protocol format is given below { destno,mode,no.of packet,pktsize,,pktno,textsize,CRC} description:- { is starting flag destno - 4bytes mode - 1 byte no.of pkt - 4byes pktsize - 6 bytes ... (1 Reply)
Discussion started by: amitpansuria
1 Replies
Login or Register to Ask a Question