Sponsored Content
Full Discussion: find and replace and keep
Top Forums Shell Programming and Scripting find and replace and keep Post 302303780 by dariyoosh on Friday 3rd of April 2009 12:17:02 PM
Old 04-03-2009
Quote:
Originally Posted by Celvin VK
Hi All

I've file in which has these lines in it

create fil23456 read on 3345
create fil23456_1 read on 34567
create fil23456_2 read on 36789

I'm trying to replace the lines in such a way that in the end the file will look like

create fil23456 read on 3345
alter fil23456 read on 34567
alter fil23456 read on 36789

I would like to replace the occurrences of _1, _2 (this can be many so i cant hardcode saying _1 and _2)

I tried some of the sed, but couldnt succed (it is removing _ but not the 1s and 2s, then other one is reomving everything before _)

Can someone please help.

Hello there,

I think that the following KornShell script does the job

Code:
#!/bin/ksh

function substring
{
    TOKEN=$1
    LENGTH=${#TOKEN}
    COUNTER=0
    typeset -L1 CURRENT_CHARACTER
    RESULT=""
    
    while (( COUNTER < LENGTH ))
    do
        CURRENT_CHARACTER=$TOKEN
        if [[ $CURRENT_CHARACTER = "_" ]]
        then
            if (( (COUNTER + 1) < LENGTH ))
            then
                if [[ ${TOKEN#?} = [0-9] ]]
                then
                    print "$RESULT"
                fi
            else
                RESULT="$RESULT$CURRENT_CHARACTER"
            fi
        else
            RESULT="$RESULT$CURRENT_CHARACTER"
        fi
        (( COUNTER = COUNTER + 1 ))
        TOKEN=${TOKEN#?}
    done
}

INPUT_FILE=$1
OUTPUT_FILE=$1_temp

if [[ -a $OUTPUT_FILE ]]
then
    rm $OUTPUT_FILE
fi

cat $INPUT_FILE > $OUTPUT_FILE


while read LINE
do
    for TOKEN in $LINE
    do
        if [[ $TOKEN = *_[0-9] ]]
        then
            print -n "$(substring $TOKEN) "
        else
            print -n "$TOKEN "
        fi
    done
    print ""
done < $INPUT_FILE > $OUTPUT_FILE


I tested it with the following input file:

Code:
create fil23456 read on 3345
create fil23456_1 read on 34567
create fil23456_2 read on 36789
create fil11111_ read on 36789
create fil22222_5 read on 36789

Which provided the following putput

Code:
create fil23456 read on 3345 
create fil23456 read on 34567 
create fil23456 read on 36789 
create fil11111_ read on 36789 
create fil22222 read on 36789


Regards,
Smilie
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

find and replace

I have statement like this column_id.columnname=="value" in unix i want to modify above statement to variable1=="value" that means i have to replace the string before "==" by string "variable1" second catch is, in statement instead of "==" you can have any arithmatic comarision... (7 Replies)
Discussion started by: mahabunta
7 Replies

2. UNIX for Advanced & Expert Users

Please help with find and replace:

Hi I am trying to find a product code hightlighted in red, and re-insert it at another place on the same file. I shall be grateful if anyone can help me with this. Stuck and have deadline!!:confused: Original Line: (I can get source data in one of these two formats) ISD=977155185403901+DIE... (2 Replies)
Discussion started by: gloovy_tb
2 Replies

3. Shell Programming and Scripting

find and replace

Hi, There are some "n" files in a directory which contains comman string.A command to find and replace the string in all the files without looping. like if i am in a directory : # find ./ -name ".txt" | xargs sed -e 's/test/tst' Upto here is performed correctly and i want to... (4 Replies)
Discussion started by: rakshit
4 Replies

4. Shell Programming and Scripting

find and replace

hi, i have a data in a file like below: 100 8388kmn844., 8488 200 8398kmn894., 8398 i want replace from kmn to . as null. output should be 100 8388, 8488 200 8398, 8398 Plz help. Thanks in advance (1 Reply)
Discussion started by: javeed7
1 Replies

5. UNIX for Dummies Questions & Answers

find and replace

I am looking to find and replace a string in a file, can anyone suggest a global find and replace. looked at previous replies on other queries but none seem to address what i am looking for. aint familiar with sed so trying to use ordinary unix commands if possible Thanks in advance (2 Replies)
Discussion started by: SummitElse
2 Replies

6. Shell Programming and Scripting

Find Replace

Need to convert echo "7 6" to $7,$6 But the count of numbers can increase say echo "7,6,8,9" tried this didn't work echo "7 6" | sed 's/\(*\)/\1/' But did not help much (3 Replies)
Discussion started by: dinjo_jo
3 Replies

7. Solaris

find/replace?

Dear All To find a file, according to you, I tried as: #find / -name file-name -print To find a string inside the files , I tried as : #find / -name "*" |xargs grep "string" Can you please let me know how can I try for find/replace (i.e. finding the intended string inside the text files... (6 Replies)
Discussion started by: hadimotamedi
6 Replies

8. Shell Programming and Scripting

Find/Replace

I have the following requirement in the shell script 1. I have more than 200 shell script files. I need to find out how many shell scripts have "sqlplus /" in the shell file 2. I need to replace all the shell scripts in the single command for example: connect scott/scott replace as ... (6 Replies)
Discussion started by: pmsuper
6 Replies

9. Shell Programming and Scripting

Find and Replace

i am having a file test1.txt and its contents is as follows. <abcaaa bbb ccc ddd> <dddeeeffff> <my computer> <abcmydocuments> Now I need to find the text abc and should be replaced as follows. <abc> <dddeeeffff> <my computer> <abc> First line has the text "abc" and it has to be... (3 Replies)
Discussion started by: kmanivan82
3 Replies

10. Shell Programming and Scripting

Find and replace?

Hi All, I have data like below 1 CREATE TABLE temp123 2 ( 3 col1 INTEGER, 4 col2 CHAR(3) CHARACTER SET LATIN NOT CASESPECIFIC, 5 col3 DECIMAL(19,0), 6 col4 VARCHAR(80) CHARACTER SET LATIN NOT CASESPECIFIC, 7 start_dt DAte FORMAT 'YY/MM/DD', 8 end_dt DATE FORMAT 'YY/MM/DD', 9 datecol1... (6 Replies)
Discussion started by: baranisachin
6 Replies
IP-TOKEN(8)							       Linux							       IP-TOKEN(8)

NAME
ip-token - tokenized interface identifier support SYNOPSIS
ip token { COMMAND | help } ip token set TOKEN dev DEV ip token del dev DEV ip token get [ dev DEV ] ip token [ list ] DESCRIPTION
IPv6 tokenized interface identifier support is used for assigning well-known host-part addresses to nodes whilst still obtaining a global network prefix from Router advertisements. The primary target for tokenized identifiers are server platforms where addresses are usually manually configured, rather than using DHCPv6 or SLAAC. By using tokenized identifiers, hosts can still determine their network prefix by use of SLAAC, but more readily be automatically renumbered should their network prefix change [1]. Tokenized IPv6 Identifiers are described in the draft [1]: <draft-chown-6man-tokenised-ipv6-identifiers-02>. ip token set - set an interface token set the interface token to the kernel. TOKEN the interface identifier token address. dev DEV the networking interface. ip token del - delete an interface token delete the interface token from the kernel. dev DEV the networking interface. ip token get - get the interface token from the kernel show a tokenized interface identifier of a particular networking device. Arguments: coincide with the arguments of ip token set but the TOKEN must be left out. ip token list - list all interface tokens list all tokenized interface identifiers for the networking interfaces from the kernel. SEE ALSO
ip(8) AUTHOR
Manpage by Daniel Borkmann iproute2 28 Mar 2013 IP-TOKEN(8)
All times are GMT -4. The time now is 10:22 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy