LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   grep help (https://www.linuxquestions.org/questions/linux-newbie-8/grep-help-4175426715/)

roopakl 09-11-2012 10:57 AM

grep help
 
Hi All,
I have made a small bash script file to make sure whether or not user's mail ID is stored in /root/.mail_id file.
Code:

# cat grep_user
#!/bin/bash
user_id_file="/root/.users"
mail_id_file="/root/.mail_id"

user=( $(awk {'print $1'} $user_id_file) )
for i in ${user[@]}; do
/bin/grep $i: $mail_id_file >/dev/null 2>&1
while [ $? -gt 0 ]; do
echo "$i user not found in $mail_id_file file."
echo
done
done

All user names apart from those users to which password is locked are stored in /root/.users file.
Code:

# cat /root/.users
user1
user2
user30
user_41
user_50
user-65
user-68
user78
user
some_more_user

The above user's mail ID is stored in /root/.mail_id file as below
Code:

# cat /root/.mail_id
user1:user1@somedomain.com
user2:user2@somedomain.com
user30:user30@somedomain.com
user-65:user-65@somedomain.com
user_50:user_50@somedomain.com
user78:user78@somedomain.com
user_41:user_41@somedomain.com
user-68:user-68@somedomain.com

Let check whether is there any difference.
Code:

# cat /root/.users | wc -l
10

# cat /root/.mail_id | wc -l
8

So two user's entries are not in the /root/.mail_id file. So let check who are those
Code:

# bash grep_user
user user not found in /root/.mail_id file.

some_more_user user not found in /root/.mail_id file.

Giving correct output as what I had expected. I added user entry as below
Code:

# echo "user:user@somedomain.com" >> /root/.mail_id

# cat /root/.mail_id
user1:user1@somedomain.com
user2:user2@somedomain.com
user30:user30@somedomain.com
user-65:user-65@somedomain.com
user_50:user_50@somedomain.com
user78:user78@somedomain.com
user_41:user_41@somedomain.com
user-68:user-68@somedomain.com
user:user@somedomain.com

Then ran
Code:

# bash grep_user
some_more_user user not found in /root/.mail_id file.

Now also giving correct output.
I replaced "user:user@somedomain.com" with "some_more_user:some_more_user@somedomain.com"
Code:

# sed -i 's/user:user@somedomain.com/some_more_user:some_more_user@somedomain.com/g' /root/.mail_id

# cat /root/.mail_id
user1:user1@somedomain.com
user2:user2@somedomain.com
user30:user30@somedomain.com
user-65:user-65@somedomain.com
user_50:user_50@somedomain.com
user78:user78@somedomain.com
user_41:user_41@somedomain.com
user-68:user-68@somedomain.com
some_more_user:some_more_user@somedomain.com

Since I removed the entry of user:user@somedomain.com, now it should show for only "user" username. But it is not showing.
Code:

# bash grep_user

# echo $?
0

# cat /root/.mail_id
user1:user1@somedomain.com
user2:user2@somedomain.com
user30:user30@somedomain.com
user-65:user-65@somedomain.com
user_50:user_50@somedomain.com
user78:user78@somedomain.com
user_41:user_41@somedomain.com
user-68:user-68@somedomain.com
some_more_user:some_more_user@somedomain.com

# cat /root/.users
user1
user2
user30
user_41
user_50
user-65
user-68
user78
user
some_more_user

The username called "user" is there in /root/.users file but the entry is not in /root/.mail_id file. But why it is not showing as "user user not found in /root/.mail_id file as before".
I really appreciate your kind help.

Thanks & Regards

TheMadIndian 09-11-2012 11:21 AM

its because "user" exists in every entry you can add ^ to indicate start of line and $ to indicate end of line

grep ^user$ /root/.users

roopakl 09-11-2012 11:43 AM

Quote:

Originally Posted by TheMadIndian (Post 4777798)
its because "user" exists in every entry you can add ^ to indicate start of line and $ to indicate end of line

grep ^user$ /root/.users

Added "^"
Code:

/bin/grep ^$i: $mail_id_file >/dev/null 2>&1
Thank you very much TheMadIndian. you solved my problem:)

TheMadIndian 09-11-2012 01:06 PM

Quote:

Originally Posted by roopakl (Post 4777818)
Added "^"
Code:

/bin/grep ^$i: $mail_id_file >/dev/null 2>&1
Thank you very much TheMadIndian. you solved my problem:)

you're welcome


All times are GMT -5. The time now is 04:05 AM.