String Manipulation


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting String Manipulation
# 1  
Old 11-22-2010
String Manipulation

Hi,
I have a file in the following format

Code:
123|shanwer|15DEC2010|bgbh|okok|16JAN3000|okok|

I want the following to be in following format
Code:
123|shanwer|12\15\2010|bgbh|okok|01\16\3000|okok|

SED/PERL/AWK Gurus
could you please help me with this?

Thanks
Shankar

Last edited by Scott; 11-22-2010 at 03:05 AM.. Reason: Code tags; removed email address
# 2  
Old 11-22-2010
Try this,
Code:
awk -F"|" 'BEGIN{a["JAN"]="01"
a["FEB"]="02"
a["MAR"]="03"
a["APR"]="04"
a["MAY"]="05"
a["JUN"]="06"
a["JUL"]="07"
a["AUG"]="08"
a["SEP"]="09"
a["OCT"]="10"
a["NOV"]="11"
a["DEC"]="12" }
{for(i=1;i<=NF;i++) {if($i ~ /[0-9].[A-Z]..[0-9].../){printf a[substr($i,3,3)]"\\"substr($i,1,2)"\\"substr($i,6) FS}else{printf $i FS}}printf "\n" }' inputfile

These 3 Users Gave Thanks to pravin27 For This Post:
# 3  
Old 11-22-2010
Code:
perl -i -pe '
BEGIN{
   %h=qw(
  JAN 01
  FEB 02
  MAR 03
  APR 04
  MAY 05
  JUN 06
  JUL 07
  AUG 08
  SEP 09
  OCT 10
  NOV 11
  DEC 12
   );} foreach  $k (keys %h){ s/(\d+)$k(\d+)/$h{$k}\\$1\\$2/ };' infile

This User Gave Thanks to k_manimuthu For This Post:
# 4  
Old 11-22-2010
With GNU date (if year<=2038) (not so efficient):
Code:
 awk -F\| '{for(i=3;i<=6;i+=3)"date -d"$i" +\"%m\\%d\\%Y\""|getline $i}1' OFS=\| infile

Code:
while IFS=\| read f1 f2 f3 f4 f5 f6 f7 f8
do
   echo "$f1|$f2|$(date -d $f3 +'%m\%d\%Y')|$f4|$f5|$(date -d $f6 +'%m\%d\%Y')|$f7|$f8"
done


Last edited by Scrutinizer; 11-22-2010 at 05:57 AM..
# 5  
Old 11-22-2010
Hi,

Another solution:
Code:
$ cat script.awk
BEGIN {
    m["JAN"] = "01"
    m["FEB"] = "02"
    m["MAR"] = "03"
    m["APR"] = "04"
    m["MAY"] = "05"
    m["JUN"] = "06"
    m["JUL"] = "07"
    m["AUG"] = "08"
    m["SEP"] = "09"
    m["OCT"] = "10"
    m["NOV"] = "11"
    m["DEC"] = "12"

    IGNORECASE = 1
    FS = "|"
}

{
    # Dates are fields nš3 and nš6.

    # Get day (first two characters), month (next three characters) and
    # year (last four characters).
    day = substr($3, 0, 2)
    month = substr($3, 3, 3)
    year = substr($3, 6)
    $3 = m[month] "\\" day "\\" year

    day = substr($6, 0, 2)
    month = substr($6, 3, 3)
    year = substr($6, 6)
    $6 = m[month] "\\" day "\\" year

    OFS = "|"
    print
}

$ awk -f script.awk infile

Regards,
Birei
This User Gave Thanks to birei For This Post:
# 6  
Old 11-22-2010
Code:
# ./justdoit infile
123|shanwer|12\15\2010|bgbh|okok|01\16\3000|okok|

Code:
## justdoit ##
x="JAN=01 FEB=02 MAR=03 APR=04 MAY=05 JUN=06 JUL=07 AUG=08 SEP=09 OCT=10 NOV=11 DEC=12"
for i in $(echo "$x" | sed 's/=[0-9]*//g') ; do
 y=$(sed "s/.*\($i\).*/\1/" infile); y1=$(echo "$x"| sed "s/.*$i=\([0-9]*\).*/\1/")
 sed -i "s/\(.*\)|\(.*\)$y\(.*\)|\(.*\)/\1|$y1\\\\\2\\\\\3\4|/" infile 2>/dev/null
done ;  more infile

regards
ygemici
This User Gave Thanks to ygemici For This Post:
# 7  
Old 11-24-2010
Thanks for you help!!!
I tried with your code,
however it does not changes all the requred substrings in one go i had to run the same scrip twice to get desired results.
My text file was 1,000,000 + records and this scrip is not capable of produting anothe file, it acts on same file. I am new to this coading please bear me,.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

String Manipulation

I'm making a little game in Perl, and I am trying to remove the first instance of a character in an arbitrary string. For example, if the string is "cupcakes"and the user enters another string that contains letters from "cupcake" e.g: "sake"the original string will now look like this (below)... (3 Replies)
Discussion started by: whyte_rhyno
3 Replies

2. Shell Programming and Scripting

Deleting part of a string : string manipulation

i have something like this... echo "teCertificateId" | awk -F'Id' '{ print $1 }' | awk -F'te' '{ print $2 }' Certifica the awk should remove 'te' only if it is present at the start of the string.. anywhere else it should ignore it. expected output is Certificate (7 Replies)
Discussion started by: vivek d r
7 Replies

3. Shell Programming and Scripting

String manipulation

Hello Could you help with small script: How to split string X1 into 3 string String X1 can have 1 or many strings X1='A1:B1:C1:D1:A2:B2:C2:D2:A3:B3:C3:D3' This is output which I want to have: Z1='A1:B1:C1:D1' Z2='A2:B2:C2:D2' Z3='A3:B3:C3:D3' (5 Replies)
Discussion started by: vikus
5 Replies

4. Shell Programming and Scripting

String manipulation

Hi All, Pls help me out on the below, 05 LAMSZ201-ZM-MEMO2-DATE02-5 PIC X(10). 05 LAMSZ201-ZM-MEMO2-AMT02-5 PIC S9(13)V99. 05 LAMSZ201-ZM-MEMO2-TYPE02-6 PIC XXX. 05 LAMSZ201-ZM-MEMO2-DATE02-6 PIC X(10). 05 ... (2 Replies)
Discussion started by: baskivs
2 Replies

5. Shell Programming and Scripting

I need help with string manipulation

First of all I am VERY new to this so bare with me and try and explain everything even if it seems simple. Basically I want to read a line of text from a html file. See if the line of text has a certain string in it. copy an unknown number of characters (the last 4 characters wiil be ".jpg" the... (1 Reply)
Discussion started by: c3lica
1 Replies

6. Shell Programming and Scripting

string manipulation

i have a file that contains a pattern like this: ajay 1234 newyork available kumar 2345 denver singh 2345 newyork ajay 3456 denver kumar 3456 newyork singh 3456 delhi available ajay 4567 miami kumar 4567 miami singh 4567 delhi i want to search for each line... (5 Replies)
Discussion started by: ajay41aj
5 Replies

7. Shell Programming and Scripting

String manipulation

Hi, i am just gettin exposed to UNIX. Could anyone of u help me out with dis problem..? i have a variable 'act' which has the value as follows, echo $act gives -0- -0- -----0---- 2008-06-04 -0- -0- echo "$act" | awk '{print ($act)}' gives, -0- -0- -----0---- 2008-06-04 -0- -0- I... (2 Replies)
Discussion started by: jerrynimrod
2 Replies

8. UNIX for Dummies Questions & Answers

string manipulation

Hi, I have a file with rows of text like so : E100005568374098100000015667 D100005568374032000000112682 H100005228374060800000002430 I need to grab just the last digits(bolded) of each line without the proceeding text/numbers. Thanks (5 Replies)
Discussion started by: james6
5 Replies

9. Shell Programming and Scripting

String Manipulation

Hi, Suppose I have the following text in a file. ORA-00942: table or view does not exist ORA-01555: snapshot too old: rollback segment number string with name "string" too small Is there any way I can list all the text that starts only with 'ORA-'? Or there any grep command that can... (7 Replies)
Discussion started by: kakashi_jet
7 Replies

10. Programming

string manipulation in C

Hi all, i have the following string as input : "<iframe src="http://abcdef.com/asd/aaa/awerftya0480000008ave/direct;wi.120;hi.600/01?page=" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" allowtransparency="true" width="120" height="600"> <script... (1 Reply)
Discussion started by: trinath
1 Replies
Login or Register to Ask a Question