08-11-2008
Is there a way to make this more efficient
I have the following code.
printf "Test Message Report" > report.txt
while read line
do
msgid=$(printf "%n" "$line" | cut -c1-6000| sed -e 's/[^a-zA-Z0-9+_:-]//g' -e 's|.*ex:Msg\(.*\)ex:Msg.*|\1|')
putdate=$(printf "%n" "$line" | cut -c1-6000| sed -e 's/[^a-zA-Z0-9+_:-]//g' -e 's|.*PutDate\(.*\)PutTime.*|\1|')
puttime=$(printf "%n" "$line" | cut -c1-6000| sed -e 's/[^a-zA-Z0-9+_:-]//g' -e 's|.*PutTime\(.*\)ApplOrgin.*|\1|')
timestamp=$(printf "%n" "$line" | cut -c1-6000| sed -e 's/[^a-zA-Z0-9+_:-]//g' -e 's|.*CreationTimeStamp\(.*\)CreationTimeStamp.*|\1|')
printf "MsgId = $msgid" >> report.txt
printf "Put Date = $putdate" >> report.txt
printf "Put Time = $puttime" >> report.txt
printf "Timestamp = $timestamp" >> report.txt
done < temp01
Basically we are producing a report from the messages taken off an MQ Queue. The messages have some characters that throws sed whereby it sometimes extracts the data I am after and sometimes not. I got around this problem by cutting the portion of the data that contains the information I am after from each record, which equates to a message taken off the queue, and passing it through the first sed command (sed -e 's/[^a-zA-Z0-9+_:-]//g' ) to filter the characters of interest. Subsequently the data is put through the second sed command to extarct the required information. From each record I require seven different bits of information, I have shown four. However, the process is repetitive for the other three.
Is there a way of improving this piece of code? I wanted to save the reformatted (printf "%n" "$line" | cut -c1-7000| sed -e 's/[^a-zA-Z0-9+_:-]//g' ) portion of the data into a variable and then pass it to sed, but sed only accepts a file as an input. This would get rid off the repetitive code. Please note, I can not use perl.
9 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
Does anyone know what's new with Efficient dispatching in the Solaris 2.8 release (vs Solaris 2.6) release?
Specifically, does anyone know of a good website to get detailed information on thread dispatching using efficient dispatching in solaris 2.8?
Thank you. (1 Reply)
Discussion started by: uchachra
1 Replies
2. Shell Programming and Scripting
I'm using korn shell to connect to oracle, retrieve certain values, put them in a list, and iterate through them. While this method works, I can't help but think there is an easier method.
If you know of one, please suggest a shorter, more efficient method.
############### FUNCTIONS ... (6 Replies)
Discussion started by: SelectSplat
6 Replies
3. Shell Programming and Scripting
Hello,
We have a directory with 15 sub-directories where each sub-directory contains 1.5 to 2 lakhs of files in it. Daily, around 300-500 files will be uploaded to each sub-directory.
Now, i need to get the list of files received today in most efficient way. I tried using "find with newer... (16 Replies)
Discussion started by: prvnrk
16 Replies
4. UNIX for Advanced & Expert Users
some of the data i receive has been typed in manually due to which there are often places where i find 8 instead of ( and the incorrect use of case
what according to you is the best way to correct such data.
The data has around 20,000 records.
The value i want to change is in the 4th field.... (2 Replies)
Discussion started by: VGR
2 Replies
5. UNIX for Dummies Questions & Answers
I want to match the red portion:
9784323456787-Unknown Phrase with punctuation "Some other PhrASE."
Is this the best regex to match this?
'978\{10\}-*' (4 Replies)
Discussion started by: glev2005
4 Replies
6. Emergency UNIX and Linux Support
Hello,
Error
awk: Internal software error in the tostring function on TS1101?05044400?.0085498227?0?.0011041461?.0034752266?.00397045?0?0?0?0?0?0?11/02/10?09/23/10???10?no??0??no?sct_det3_10_20110516_143936.txt
What it is
It is a unix shell script that contains an awk program as well as... (4 Replies)
Discussion started by: script_op2a
4 Replies
7. UNIX for Advanced & Expert Users
Hi Experts,
I've been trying simple grep to search for a string in a huge number of files in a directory.
grep <pattern> *
this gives the search results as well as the following -
grep: <filename>: Permission denied
grep: <filename>: Permission denied
for files which I don't have... (4 Replies)
Discussion started by: sumoka
4 Replies
8. Programming
Hi there,
I had run into some fortran code to modify. Obviously, it was written without thinking of high performance computing and not parallelized... Now I would like to make the code "on track" and parallel. After a whole afternoon thinking, I still cannot find where to start. Can any one... (3 Replies)
Discussion started by: P_E_M_Lee
3 Replies
9. Shell Programming and Scripting
VARIABLE="jhovan 5259 5241 0 20:11 ? 00:00:00 /proc/self/exe --type=gpu-process --channel=5182.0.1597089149 --supports-dual-gpus=false --gpu-driver-bug-workarounds=2,45,57 --disable-accelerated-video-decode --gpu-vendor-id=0x80ee --gpu-device-id=0xbeef --gpu-driver-vendor... (3 Replies)
Discussion started by: SkySmart
3 Replies
LEARN ABOUT OPENDARWIN
column
COLUMN(1) BSD General Commands Manual COLUMN(1)
NAME
column -- columnate lists
SYNOPSIS
column [-tx] [-c columns] [-s sep] [file ...]
DESCRIPTION
The column utility formats its input into multiple columns. Rows are filled before columns. Input is taken from file operands, or, by
default, from the standard input. Empty lines are ignored.
The options are as follows:
-c Output is formatted for a display columns wide.
-s Specify a set of characters to be used to delimit columns for the -t option.
-t Determine the number of columns the input contains and create a table. Columns are delimited with whitespace, by default, or with
the characters supplied using the -s option. Useful for pretty-printing displays.
-x Fill columns before filling rows.
DIAGNOSTICS
The column utility exits 0 on success, and >0 if an error occurs.
ENVIRONMENT
COLUMNS The environment variable COLUMNS is used to determine the size of the screen if no other information is available.
EXAMPLES
(printf "PERM LINKS OWNER GROUP SIZE MONTH DAY " ;
printf "HH:MM/YEAR NAME
" ;
ls -l | sed 1d) | column -t
SEE ALSO
colrm(1), ls(1), paste(1), sort(1)
HISTORY
The column command appeared in 4.3BSD-Reno.
BSD
June 6, 1993 BSD