Problems with cut


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problems with cut
# 1  
Old 04-28-2008
Problems with cut

Hi all,


0680046755000011 3040249 3005930 60180GPRS4Samsung_SGH_Z500


This is the format of my log file and parameters for log file are like

• 10 first characters: MSISDN
• 6 next characters: Hour
• 18 next characters: ID SA Source
• 18 next characters: ID SA Destination


I have 11 whitespaces in between my first and second colums.I need to cut fitst 10 char next 6 char and next 18 char(including white spaces) . and i tried follwing in my code

MSISDN=`echo $data | cut -c1-10`
HOUR=`echo $data | cut -c11-16`
ID_SA_SOURCE=`echo $data | cut -c17-35`
ID_SA_DEST=`echo $data | cut -c36-54`


But becos of whitespaces it is not cutting properly.. can any one suggest alternatives

Thnks
# 2  
Old 04-28-2008
Quote:
Originally Posted by scorpio
Hi all,


0680046755000011 3040249 3005930 60180GPRS4Samsung_SGH_Z500


This is the format of my log file and parameters for log file are like

• 10 first characters: MSISDN
• 6 next characters: Hour
• 18 next characters: ID SA Source
• 18 next characters: ID SA Destination


I have 11 whitespaces in between my first and second colums.I need to cut fitst 10 char next 6 char and next 18 char(including white spaces) . and i tried follwing in my code

MSISDN=`echo $data | cut -c1-10`
HOUR=`echo $data | cut -c11-16`
ID_SA_SOURCE=`echo $data | cut -c17-35`
ID_SA_DEST=`echo $data | cut -c36-54`


But becos of whitespaces it is not cutting properly.. can any one suggest alternatives

Thnks
First reduce the spaces in between the log file data with the command tr
Code:
HOUR=`echo $data | tr -s " " |cut -c11-16`

give a try to this one.
# 3  
Old 04-28-2008
Hi
Thanks for the reply

But i cant trim my whitespaces from log files . i need to take that also..
becos parameters are set like
• 10 first characters: MSISDN
• 6 next characters: Hour
• 18 next characters: ID SA Source
• 18 next characters: ID SA Destination
This characters includes white spaces also
# 4  
Old 04-28-2008
Quote:
Originally Posted by scorpio
Hi
Thanks for the reply

But i cant trim my whitespaces from log files . i need to take that also..
becos parameters are set like
• 10 first characters: MSISDN
• 6 next characters: Hour
• 18 next characters: ID SA Source
• 18 next characters: ID SA Destination
This characters includes white spaces also
Code:
id=`echo 0680046755000011 3040249 3005930 60180GPRS4Samsung_SGH_Z500 | tr -s " " |cut -c17-35`
output is --- 3040249 3005930 60

# 5  
Old 04-28-2008
Hi ,

Actually the log file is like 0608166896000001 in my first column 11 whitespaces and 3001339 in my second column( 3001339) then 11 whitespaces and
3204235 in my third coumn .
...

But while reading line by line using following code

while read data
do
echo data $data
ID_SA_SOURCE=`echo $data | cut -c17-35`
echo ID_SA_SOURCE $ID_SA_SOURCE
done < $TRACKING_LOGDIR/$listdata


I am not getting the 11 white spaces in "data" variable instead of i am getting only one space..i want 11whtespaces first and 3001339 value in my ID_SA_SOURCE variable....

CAn you pleasse check this
# 6  
Old 04-28-2008
You need to properly quote your variables when you echo them, otherwise the shell will trim whitespace. I'd advise against using echo at all, though.

But here's how to quote properly. To be a little bit on the safe side, I also zap IFS; I don't believe it's strictly necessary here, but it's a technique you should be aware of.

Code:
OLDIFS=$IFS
IFS='
' # just a newline, in single quotes
while read data
do
  MSISDN="`echo "$data" | cut -c1-10`"
  HOUR="`echo "$data" | cut -c11-16`"
  ID_SA_SOURCE="`echo "$data" | cut -c17-35`"
  ID_SA_DEST="`echo "$data" | cut -c36-54`"
done < $TRACKING_LOGDIR/$listdata
IFS=$OLDIFS

Having that out of the way, how about something like this?

Code:
awk '{ OFS=":"; print substr($0, 1, 10), substr($0, 11, 16),
    substr($0, 17, 35), substr($0, 17, 35) }' $TRACKING_LOGDIR/$listdata |
while IFS=: read MSISDN HOUR ID_SA_SOURCE ID_SA_DEST; do
  echo "'$HOUR': All your '$ID_SA_SOURCE' are '$ID_SA_DEST' to '$MSISDN'"
done

# 7  
Old 04-28-2008
Hi All,

I tried the first its working Thanks to all Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

3 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Using :<<cut / cut to comment out block of bash script

I am using : << cut / cut to comment out block of code. Works fine on few lines of script, then it gives me this cryptic error when I try to comment out about 80 lines. The "warning " is at last line of script. done < results 169 echo "END read all positioning parameters" 170... (8 Replies)
Discussion started by: annacreek
8 Replies

2. UNIX for Beginners Questions & Answers

Cut command: can't make it cut fields

I'm a complete beginner in UNIX (and not a computer science student either), just undergoing a tutoring course. Trying to replicate the instructions on my own I directed output of the ls listing command (lists all files of my home directory ) to My_dir.tsv file (see the screenshot) to make use of... (9 Replies)
Discussion started by: scrutinizerix
9 Replies

3. Shell Programming and Scripting

Cut Command error cut: Bad range

Hi Can anyone what I am doing wrong while using cut command. for f in *.log do logfilename=$f Log "Log file Name: $logfilename" logfile1=`basename $logfilename .log` flength=${#logfile1} Log "file length $flength" from_length=$(($flength - 15)) Log "from... (2 Replies)
Discussion started by: dgmm
2 Replies
Login or Register to Ask a Question