Visit Our UNIX and Linux User Community


Help with command cut


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with command cut
# 1  
Old 09-02-2009
Help with command cut

Hi,

I have a script that use some files and generate one file using these files. The main command that i am using in the script is the command cut, but it is very low, and i would like another command to generate my file faster...

My need is be able to use another command similar than "cut" but more fast...

thanks!!

Sorry for my english Smilie

the code is the next:

Code:
inputfile=LEGALENTITY.CSV
outputfile=EXIT.CSV
 
//these are some of the input files that i am using, but the content not
// is important
cfgfile1=CONTRASEC.csv
cfgfile2=TemplateCounterpartyFile.csv
cfgfile3=TEPR_Pcre_ListRecovery99.csv
cfgfile5=Pcre_ListDeveloped.csv
inputdir=$TEPR_DATIN
outputdir=/us/xatecees/Dani/IRC
 
# 
# Cycle through all the Legal Entities in the file.
#
for lines in `cat $copyfile | sed "s/ /*/g"`;
do

    cpy=`echo $lines | cut -f2 -d";"`
    sector=`echo $lines | cut -f8 -d";"`
    
#
# Rating is preferably obtained from issuer rating file. If not possible,
# we use the Legal Entity rating.
#
    rating=`grep "^$cpy " $TEPR_CFG_PAIS/TEPR_Pcre_Ratemi.txt | cut -f2 -d" "`
    if [[ -z $rating ]]; then
       rating=`echo $lines | cut -f9 -d";"`
    fi
#
# Non rated counterparties now come as BB- in the Legal Entity file,
# so there is no more need to change CCCs. Old conversion is commented
# below.
#
# NLW Feb06
#
# Unknown ratings come as CCC. We transform them into BBB. Known CCC+
# and CCC- are transformed into CCC. Unfortunately, a known CCC will
# be considered BBB.
#
#    if [[ $rating == "CCC" ]]; then
#       rating="BB-"
#    fi
    if [[ $rating == "CCC+" ]]; then
       rating="CCC"
    fi
    if [[ $rating == "CCC-" ]]; then
       rating="CCC"
    fi
    if [[ $rating == "C" ]]; then
       rating="CCC"
    fi

#   Rating information is now available in the the last field of the LEGAL_ENTITY file.
#
#   Country information must be obtained from the HISTCLI and ALTACLI files that are
#   in the dat/se directory. We generate cpylist as follows:
#
#   `cat TEPR_TRIDA_In_????HISTCLI.TXT TEPR_TRIDA_In_????ALTACLI.TXT|cut -b2-11,97-99 | sort -u >cpylist`
#   pais=`echo $cpyfile | cut -f2 -d" "`
#   etc...
#
#   If country is not found in cpyfile, we just set it to ES. Losses to the 
#   counterparty will be properly generated and included in the Spain group for 
#   marginal reports. An error message is issued
#
#   We do not include any "group" counterparty, since there are no transactions 
#   related to them.
#    
#   NLW,   Apr-2005
#
    if [[ $cpy != G_* ]]; then 
#
#   We now obtain the country directly from the Legal Entity file, so there is
#   no more need to use the cpylist methodology described above. 
#
#   Original code is commented below
#
#   NLW Oct 05
#
#      pais=`grep "^$cpy " $cfgfile4 | cut -b11-12`
       pais=`echo $lines | cut -f10 -d";"`
       if [[ -z $pais ]]; then
            export TEPR_CodMsgCarga=TEPR5004S#INF00
            export TEPR_MSG_ERRCOD=INFO
            . $TEPR_UTI_MPAIS/TEPR_MPais_MsgScript.SH
          pais="ES"
       fi
#
#   Obtain the recovery rate of the counterparty according to the contents of the
#   TEPR_Pcre_ListRecovery99.csv (counterparties with 0.99 recovery) and to 
#   the sector field. 
# 
#   Changed to include the list of developed countries that have 80% recovery for
#   both the sector "Gobierno" and "Sector Financiero". However, the counterparties
#   in the ListRecovery99 file still have 99% recovery, independent of country and
#   sector.  All the others have 60% recovery.
# 
#   NLW Oct 05
#

       rr=0.60
       banking=`grep \;$cpy\; $cfgfile3`
       if [ $banking ]; then 
          rr=0.999
       else
          developed=`grep ^$pais $cfgfile5`
          if [[ -n $developed ]]; then             
             if [[ $sector == "GOBIERNOS" ]]; then
                rr=0.75
             fi
          fi
          if [[ $sector == "SECTOR*FINANCIERO" ]]; then
              rr=0.55
          fi
          
       fi
       buffer=`grep ",$rating," $cfgfile2 | grep ",$rr,"` 
       buffer=`echo $buffer | sed "s/CONTRAPARTE/$cpy/g" | sed "s/PAIS/$pais/g" | sed "s/SECTOR/$sector/g" | sed "s/*/ /g"` 
       echo "cpy=$cpy pais=$pais sector=$sector rr=$rr"
       echo "buffer: $buffer"
       echo $buffer >>$outputdir/$outputfile
    fi


Last edited by vgersh99; 09-02-2009 at 11:39 AM.. Reason: code tags, PLEASE!
# 2  
Old 09-02-2009
To keep the forums high quality for all users, please take the time to format your posts correctly.

First of all, use Code Tags when you post any code or data samples so others can easily read your code. You can easily do this by highlighting your code and then clicking on the # in the editing menu. (You can also type code tags [code] and [/code] by hand.)

Second, avoid adding color or different fonts and font size to your posts. Selective use of color to highlight a single word or phrase can be useful at times, but using color, in general, makes the forums harder to read, especially bright colors like red.

Third, be careful when you cut-and-paste, edit any odd characters and make sure all links are working property.

Thank You.

The UNIX and Linux Forums
# 3  
Old 09-02-2009
Quote:
Originally Posted by the_pas
The main command that i am using in the script is the command cut, but it is very slow, and i would like another command to generate my file faster...
  1. First you have to read carefully Useless Use of Cat Award
  2. Once you understand you can start improving your script.
  3. Try to use the shell built-in commands as much as possible.

Few example of UUOC from your script.
Code:
for lines in `cat $copyfile | sed "s/ /*/g"`;

Code:
    cpy=`echo $lines | cut -f2 -d";"`
    sector=`echo $lines | cut -f8 -d";"`

Code:
pais=`grep "^$cpy " $cfgfile4 | cut -b11-12`

Code:
       buffer=`grep ",$rating," $cfgfile2 | grep ",$rr,"` 
       buffer=`echo $buffer | sed "s/CONTRAPARTE/$cpy/g" | sed "s/PAIS/$pais/g" | sed "s/SECTOR/$sector/g" | sed "s/*/ /g"`


Previous Thread | Next Thread
Test Your Knowledge in Computers #331
Difficulty: Medium
The last Windows operating system to be based on the Windows 9x kernel was Windows 98.
True or False?

9 More Discussions You Might Find Interesting

1. 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

2. Shell Programming and Scripting

Cut command

Hi All, I am a beginner learning shell script, Would it be possible to use -c and -f in cut command together ? Example : /opt/oracle/work/Antony/Shell_Script> cat shortlist 2233|a.k. shukula |g.m. |sales2 |12/12/52 |6000 1006|chanchal singhvi ... (3 Replies)
Discussion started by: Antony Ankrose
3 Replies

3. AIX

Need help on cut command

HI, i have data in one variable like out=/usr/sbin/filename and i want output like only out=filename how to do (5 Replies)
Discussion started by: sumanthupar
5 Replies

4. UNIX for Dummies Questions & Answers

Cut pid from ps using cut command

hay i am trying to get JUST the PID from the ps command. my command line is: ps -ef | grep "mintty" | cut -d' ' -f2 but i get an empty line. i assume that the delimiter is not just one space character, but can't figure out what should i do in order to do that. i know i can use awk or cut... (8 Replies)
Discussion started by: ran ber
8 Replies

5. 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

6. Shell Programming and Scripting

cut command help

n2=user1 pts/3 2010-06-29 01 Now i want to split this string with space(' ') character. After splitting output would be: use1 pts/3 2010-06-29 01 I did: nn=${n2} | cut -d ' ' -f2 echo ${nn} It prints nothing. I want the output: pts/3 (2 Replies)
Discussion started by: cola
2 Replies

7. AIX

Use of Cut Command

Hi All, Can anyone tell me how to use cut command?I have tried but its not working...Please find the details below : $ cat file1 SlNo. E_ID E_Name Age Dept 1 123 A 20 Electrical 2 124 B 20 Electronics 3 125 C 24 Computer 4 126 D 23 Mechanical ... (3 Replies)
Discussion started by: Puja Sharma
3 Replies

8. UNIX for Dummies Questions & Answers

Cut Command help

Hi , I am new to Unix.I have a shell script whenere I wnat to find if a particular server is running and kill all the instances of it (running on different ports) script filename to start the srever is say abcd If i do ps -eaf | grep abc I get all the instances of srever running .In the... (1 Reply)
Discussion started by: shradham
1 Replies

9. UNIX for Dummies Questions & Answers

CUT Command

Hi, Can anyone tell me if I can apply multiple cut on a single variable like below in a sh script: tmp=`cut -c 1-4 $val` tmp1=`cut -c 5-12 $val` tmp2=`cut -c 13-18 $val` If not, what is the other way to do this. Thanks and Best Regards Shoeb (17 Replies)
Discussion started by: shoeb_syed
17 Replies

Featured Tech Videos