Sponsored Content
Top Forums Shell Programming and Scripting prompt to delete each record when pattern is found Post 302475176 by bartsimpsong on Friday 26th of November 2010 10:42:09 PM
Old 11-26-2010
Data prompt to delete each record when pattern is found

Hello!. I am working on a very simple program and I have been trying different things. This is so far what I have done and there is one small detail that still does not work. It finds all the records in a phonebook per say:
Code:
./rem Susan
More than one match; Please select the one to remove: 
Susan1 banana
Susan2 apple   remove (y/n)?
n

The problem is that it only prompts to remove the last record and skips the first record. BUT if I type "y" then it will remove both records from the phonebook file, if I type "n" then it removes none. Here is my program so far.
Code:
if [ "$#" -ne 1 ]
then
    echo "Incorrect number of arguments."
    echo "Usage: rem name"
    exit 1
fi

name=$1

#
# Find number of matching entries
#

matches=$(grep "$name" phonebook | wc -l)
names=$(grep "$name" phonebook | awk '{print $1" " $2}')
echo "$names" 
#p="$1"

#
# If more than one match, issue message, else remove it
#

if [ "$matches" -gt 1 ]
then
    
    echo "More than one match; Please select the one to remove: "
    for i in "$names"
     do
        echo "$i   remove (y/n)?"
        read ans
        if [ $ans != n ]
            then
            grep -v "$name" phonebook > /tmp/phonebook
            mv /tmp/phonebook phonebook
        fi

    done
    
elif [ "$matches" -eq 1 ]
then
    grep -v "$name" phonebook > /tmp/phonebook
    mv /tmp/phonebook phonebook
else
    echo "I couldn't find $name in the phone book"
fi

Does anybody would be so kind to tell me what is wrong with my program? I appreciate any help. Thank you, thank you.

Last edited by Scott; 11-27-2010 at 05:37 AM.. Reason: Code tags
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Delete a block of text delimited by blank lines when pattern is found

I have a file which contains blocks of text - each block is a multi-lines text delimited by blank lines eg. <blank line> several lines of text ... pattern found on this line several more lines of text ... <blank line> How do you delete the block of text (including the blank lines) when... (17 Replies)
Discussion started by: gleu
17 Replies

2. Shell Programming and Scripting

How can I parse a record found in /etc/passwd into variables?

I am working with the Oracle 10.2.0.3 job scheduler on Solaris 10, and unfortunately, the scheduler executes scripts in such a way that several default shell environment variables are not defined. For example, $HOME, $USER, and $LOGNAME are missing. How can I parse the appropriate record in... (7 Replies)
Discussion started by: shew01
7 Replies

3. Shell Programming and Scripting

Finding Last occurance of another pattern when a pattern is found.

Hi, I have two files viz, rak1: $ cat rak1 rak2: $ cat rak2 sdiff rak1 rak2 returns: I want the lines that got modified, changed, or deleted preceding with the section they are in. I have done this so far: (1 Reply)
Discussion started by: rakeshou
1 Replies

4. Shell Programming and Scripting

comment/delete a particular pattern starting from second line of the matching pattern

Hi, I have file 1.txt with following entries as shown: 0152364|134444|10.20.30.40|015236433 0233654|122555|10.20.30.50|023365433 ** ** ** In file 2.txt I have the following entries as shown: 0152364|134444|10.20.30.40|015236433 0233654|122555|10.20.30.50|023365433... (4 Replies)
Discussion started by: imas
4 Replies

5. Shell Programming and Scripting

search a pattern and if pattern found insert new pattern at the begining

I am trying to do some thing like this .. In a file , if pattern found insert new pattern at the begining of the line containing the pattern. example: in a file I have this. gtrow0unit1/gctunit_crrownorth_stage5_outnet_feedthru_pin if i find feedthru_pin want to insert !! at the... (7 Replies)
Discussion started by: pitagi
7 Replies

6. Shell Programming and Scripting

Delete line if pattern not found

I thought that this was going to be quit simple using sed but i wasn't able to find a way to delete the second line of a text file if my pattern was not found in the line With awk i am completly useless :rolleyes: Any ideas? (2 Replies)
Discussion started by: jepeto
2 Replies

7. Shell Programming and Scripting

Reject the record if the record in the next line does not satisfy the pattern

Hi, I have a input file with the following entries: 1one 2two 3three 1four 2five 3six 1seven 1eight 1nine 2ten The output should be 1one 2two 3three 1four 2five 3six (2 Replies)
Discussion started by: supchand
2 Replies

8. Shell Programming and Scripting

Delete a pattern present in file 2 from file 1 if found in file 1.

I have two files File1 ==== 1|2000-00-00|2010-02-02|| 2| 00:00:00|2012-02-24|| 3|2000-00-00|2011-02-02|| File2 ==== 2000-00-00 00:00:00 I want the delete the patterns which are found in file 2 from file 1, Expected output: File1 ==== (5 Replies)
Discussion started by: machomaddy
5 Replies

9. Shell Programming and Scripting

If first pattern is found, look for second pattern. If second pattern not found, delete line

I had a spot of trouble coming up with a title, hopefully you'll understand once you read my problem... :) I have the output of an ldapsearch that looks like this: dn: cn=sam,ou=company,o=com uidNumber: 7174 gidNumber: 49563 homeDirectory: /home/sam loginshell: /bin/bash uid: sam... (2 Replies)
Discussion started by: samgoober
2 Replies

10. Shell Programming and Scripting

Delete only if duplicates found in each record

Hi, i have another problem. I have been trying to solve it by myself but failed. inputfile ;; ID T08578 NAME T08578 SBASE 30696 EBASE 32083 TYPE P func just test func chronology func cholesterol func null INT 30765-37333 INT 37154-37318 Link 5546 Link 8142 (4 Replies)
Discussion started by: redse171
4 Replies
tinydyndns-data(8)					      System Manager's Manual						tinydyndns-data(8)

NAME
tinydyndns-data - add or remove TYPE A record to or from data.cdb SYNOPSIS
tinydyndns-data add|remove fqdns DESCRIPTION
fqdns consists of one or more argument, each specifying a fully qualified domain name (fqdn). tinydyndns-data adds a TYPE A record to or removes it from data.cdb in the current directory. Other than tinydns-data(8), tinydyndns-data does not know about the source file data but changes the binary database data.cdb directly. tinydyndns-data reads data.cdb and copies its data to data.tmp. While reading the records, tinydyndns-data checks for each fqdn in fqdns if this hostname has a TYPE A record in data.cdb, drops the record when called with the option remove, or refuses to add the record when called with the option add. When called with the option add, tinydyndns-data then adds all new fqdns to data.tmp. The data of the newly created records can optionally be controlled through the environment, see below. Finally tinydyndns-data renames data.tmp to data.cdb. OPTIONS
add For each fqdn in fqdns, add a TYPE A record for fqdn to data.cdb with the default IP address (127.14.14.14). remove For each fqdn in fqdns, remove all TYPE A records for fqdn from data.cdb. ENVIRONMENT
IP The environment variable IP overrides the default IP address (``127.14.14.14'') for newly created records. $IP must be a valid IP address. TTL time-to-live. The environment variable TTL overrides the default time-to-live in seconds (0 if TTD is set, otherwise 5). $TTL must be an integer. TTD time-to-die. $TTD must be an integer, specifying a number of seconds. If TTD is set, the timestamp of newly created records is set to the current time plus $TTD seconds, and TTL is set to zero by default, so that tinydns(8) interpretes the timestamp as time-to- die. Note: you probably want to adjust SOA ttl, or create a wildcard record, to prevent DNS caches from caching nxdomain, when using this feature. LOC location. $LOC must be two characters long. If LOC is set, it specifies the client location for newly created records. EXIT CODES
tinydyndns-data exits 111 if anything goes wrong and leaves data.cdb unchanged. tinydyndns-data exits 0 if all fqdns were processed and the new data.cdb was written. For each fqdn in fqdns that tinydyndns-data was not able to remove or add (e.g., not there, or already there), it increases the exit code by one and exits non-zero (maximum is 100). FILES
./data.cdb ./data.tmp SEE ALSO
tinydyndns-update(8), tinydyndns-conf(8) http://smarden.org/tinydyndns/ AUTHOR
Gerrit Pape <pape@smarden.org> tinydyndns-data(8)
All times are GMT -4. The time now is 08:45 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy