pass parameter to SED


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting pass parameter to SED
# 8  
Old 10-09-2012
Quote:
Originally Posted by deep_kol
Double quote also didnt work Smilie

There is a log file i want to capture the portion between line 28 and 31 .
Code:
f_email()
{
  message "Sending  Bad record details  through Email "
  
  f_name=`ls -ltr ${BAD_FILE1} 2>/dev/null|awk '{print $9}'`
  l_name=`ls -ltr ${LOG_FILE1} 2>/dev/null|awk '{print $9}'`

  grep -n '^bad' ${l_name}|read lstart 
  grep -n '^Statistics' ${l_name}|read lend

echo "Please find the below reason for the rejection . To check the bad data plase find the attachment\n" > ${LOG_DIR}/Email.txt

#sed -n '28,31p' ${l_name} >> ${LOG_DIR}/Email.txt
sed -n "${lstart},${lend}p" ${l_name} >> ${LOG_DIR}/Email.txt

if [[ -s $f_name ]] then
    (cat ${LOG_DIR}/Email.txt;uuencode $f_name $f_name)|mailx -s "MFP SIZE Exceed report error" BalB@dressbarn.com
fi
}

After this:
Code:
  grep -n '^bad' ${l_name}|read lstart 
  grep -n '^Statistics' ${l_name}|read lend

The two variables will be empty in most shells.
Try:
Code:
lstart=$(grep -n '^bad' "${l_name}")
etc.

instead...

Alternatively try:
Code:
sed -n '/^bad/,/^Statistics/p' "$l_name"

# 9  
Old 10-09-2012
Quote:
Originally Posted by deep_kol
Code:
grep -n '^bad' ${l_name}|read lstart 
grep -n '^Statistics' ${l_name}|read lend
sed -n '$lstart,${lend}p' ${l_name} [...]

I might miss something but to me the whole construction looks wrong from the start. Try the following, which should do the same in one pass what you try to achieve in 3 commands with 2 pipelines:

Code:
sed -n '/^bad/,$ {;p;/^Statistics/q;}'

It prints nothing at first. Until encountering the first line starting with "bad" it starts printing the lines to the end - but the first line starting with "Statistics" will quit sed, so no more lines get printed. It prints therefore only the lines in between these two lines. (To be precise: the first occcurrence of each.)

I hope this helps.

bakunin
# 10  
Old 10-09-2012
Thanks a lot Scrutinizer . it works. Smilie
below code works fine . One more question why it it not working in command line.


Code:
appworx ds prd > pwd
/app/oretail/rdw/12/ds/prd/log
appworx ds prd > sed -n '/^bad/,/^Statistics/p'  SRC_DRS_ADDL_SLS_INFO_LM_DM.20121008.log
appworx ds prd >

Code:
f_email()
{
  message "Sending  Bad record details  through Email "
  
  f_name=`ls -ltr ${BAD_FILE1} 2>/dev/null|awk '{print $9}'`
  l_name=`ls -ltr ${LOG_FILE1} 2>/dev/null|awk '{print $9}'`

 echo "  --Please find the below reason for the rejection . To check the bad data plase find the attachment\n" > ${LOG_DIR}/Email.txt
 sed -n '/^bad/,/^Statistics/p' "$l_name" >> ${LOG_DIR}/Email.txt

if [[ -s $f_name ]] then
    (cat ${LOG_DIR}/Email.txt;uuencode $f_name $f_name)|mailx -s "MFP SIZE Exceed report error" BalB@dressbarn.com
fi
}

# 11  
Old 10-09-2012
> redirects into files, not other commands. You probably wanted | sed, not > sed.
# 12  
Old 10-09-2012
I think "appworx ds prd >" is the prompt, no?
# 13  
Old 10-09-2012
didnt work
Code:
$sed -n '/^bad/,/^Statistics/p'  SRC_DRS_ADDL_SLS_INFO_LM_DM.20121008.log > a.txt

"appworx ds prd >" is the prompt .
# 14  
Old 10-09-2012
Try it this way:
Code:
cat SRC_DRS_ADDL_SLS_INFO_LM_DM.20121008.log | sed -n '/^bad/,/^Statistics/p' >a.txt

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to pass parameter to bteq?

I am using below code to connect terdata and getting the query result in a file.Now i want to use same code for different tables,plz tell me how to pass table name as parameter.i tried using as below code but not working. bteq < /download/viv/dev/ops/Scripts/ter.sh FLTORGTKR_ORG_etc.. ... (1 Reply)
Discussion started by: katakamvivek
1 Replies

2. Shell Programming and Scripting

Pass parameter

Hi, I have following for loop , please let me know how to get ${TXP_EXT_TABLE_${i}_SQL} parameter with 1DAY and 7DAY values. for i in 1DAY 7DAY do ${NZSQL_DIR}/nzsql -h ${HOST} -time -v ON_ERROR_STOP=1 -f ${SQL_DIR}/${TXP_EXT_TABLE_${i}_SQL} > ${TMP_LOG_FILE} 2>&1 done ... (4 Replies)
Discussion started by: sandy162
4 Replies

3. Shell Programming and Scripting

Pass value from file to parameter

Hi Guys, I have a file in the format Parmater=value. I want to read the value and pass it to corresponding Variable. The Parameter file is as follows Number=23 Text1=mango Text2=yup 'Number' value needs to be read and passed to ID variable. Also, 'Text1' value needs to be passed to... (9 Replies)
Discussion started by: mac4rfree
9 Replies

4. Shell Programming and Scripting

How to pass a parameter from the terminal?

Hi, I am new in Ubuntu, I will be glud to know: 1. How to pass a parameter from the terminal to a file that I write in shell script. What is the command line I need to write in the terminal? 2. How to get the parameter in the file? What do I need to write in the file? 3. What kind of file is... (1 Reply)
Discussion started by: vess
1 Replies

5. UNIX for Dummies Questions & Answers

How to pass the parameter value to a... ?

Hello I have a simple code like this one: #!/bin/ksh VER=$1 cat /usr/text | while read line do echo $line done Let's say $1=1.0.0 and the contents of text is: abcd.cfg asdf I would like the output to be like this abcd1.0.0.cfg asdf1.0.0 I am thinking of passing the... (5 Replies)
Discussion started by: khestoi
5 Replies

6. Shell Programming and Scripting

How to pass a parameter

Hi all, How to pass a parameter from a oracle pl/sql procedure parameter to shell environment and use it? (1 Reply)
Discussion started by: megh
1 Replies

7. Shell Programming and Scripting

Pass parameter into script

I would like to write a scirpt a.sh that it first checks the first parameter of the input. If it fulfill some condition ,then run an executable program b by using all the parameter. ie. > ./a.sh 10 20 30 40 50 Then a.sh first checks the first parameter, 10, if it mathes the requirement, then... (2 Replies)
Discussion started by: alfredo
2 Replies

8. Shell Programming and Scripting

Help required to pass the parameter

i am calling a pl/sql procedure through a shell script, there is one IN and 2 OUT parameter required to pass to the procedure to execute.. My procedure is XX_CITIDIRECT_EXP_PKG.main_proc and In parameter is p_period which I wanto to pass 'MAY-06'. Can anyone figure out, whats is wrong here ... (4 Replies)
Discussion started by: u263066
4 Replies

9. UNIX for Dummies Questions & Answers

PASS parameter to AWK

Hi, Can i pass a parameter(not a file name) as a parameter to a awk program? eg; $awk -f test 1 2 3 here test is the filename...and 1,2,3 are the i/p parameters? thank you:-) (2 Replies)
Discussion started by: unisam
2 Replies
Login or Register to Ask a Question