Once you grepped the right line, you can use this : ... | sed -e "s/^<item> *\([^ ]*\) *<\/item>/\1/"
It will simply select everything between item tags, without spaces. So, it does not check if the mail adress is right.
After, to update your second file, if the "To: " is unique, you can do : sed -i -e "s/^\(To:.*\)$/\1, $newAdress/" myFile.txt
newb1000, this may be a simpler way to do it, and follow:
What is happening here is, you search for pattern that you are looking for, for example, <item>, and replace it with nothing - the part between the second and the third /.
So, let's explain what happens : sed -e "s/^<item> *\([^ ]*\) *<\/item>/\1/"
"s/blabla1/blabla2/" means we'll replace blabla1 by blabla2.
"^<item> *" means we want a line, which starts with "<empty>" and spaces (or not)
" *<\/item>" means we want a line, which finishes by spaces (or not) and </item>. The backslash is used to not interpret the following slash.
\(blabla\) means "blabla" is useful and we need to save it for after.
[^ ]* means we are looking for everything except spaces.
"\1", in the second part is calling the first important thing saved in the first part -> \(blabla\)
So, we are selecting all the line surrounded by <item>...</item> and only keep what is inside, except space.
Thanks, that does make sense, basically you're removing everything apart from what I'm searching for.
I tried this with:
cat file | grep "<item>" | sed <and your command>
which leaves me with the email addresses I want.
How is it best to then save these results and apply them to the other file?
Quote:
Originally Posted by g.pi
newb1000, this may be a simpler way to do it, and follow:
What is happening here is, you search for pattern that you are looking for, for example, <item>, and replace it with nothing - the part between the second and the third /.
- GP
---------- Post updated at 04:54 PM ---------- Previous update was at 04:51 PM ----------
Thanks man, that makes sense as well now.
There is one bit, I'm still a bit confused with though:
[^ ]*
doesnt that mean look to the start of the line again for one or more spaces?
Quote:
Originally Posted by LeNouveau
Yes, the space is useful ^^
So, let's explain what happens : sed -e "s/^<item> *\([^ ]*\) *<\/item>/\1/"
"s/blabla1/blabla2/" means we'll replace blabla1 by blabla2.
"^<item> *" means we want a line, which starts with "<empty>" and spaces (or not)
" *<\/item>" means we want a line, which finishes by spaces (or not) and </item>. The backslash is used to not interpret the following slash.
\(blabla\) means "blabla" is useful and we need to save it for after.
[^ ]* means we are looking for everything except spaces.
"\1", in the second part is calling the first important thing saved in the first part -> \(blabla\)
So, we are selecting all the line surrounded by <item>...</item> and only keep what is inside, except space.
---------- Post updated at 05:01 PM ---------- Previous update was at 04:54 PM ----------
Usually, when you put something between [], that means you're looking for one of the things inside. But if you insert "^" at the begining, that means you're looking something that is not inside.
It inverts rule matching.
My function is more restrictives than g.pi's.
For example, if there is a space before the "<item>", because of my "^<item>", it will not match anymore and it become useless.
My first idea was : ... | grep -o "[a-zA-Z0-9.-]@[a-zA-Z0-9.-]"
but if there is a not expected character, it does not work anymore.
Hi
I want to create a shell script with the following awk command & also get the filenames in output.
awk '/<catetcsecuretty0>/ {p=1} /<catvarlogmessages0>/ {p=0} p' *.xml
As there will be multiple outputs related to many xml files I cannot identify which output belongs to which file
... (5 Replies)
Hi ,
I am new to shell scripting . I need to write a shell script in sql to add 10,000 lines of data in a table . Pls help guys :)
---------- Post updated at 07:08 PM ---------- Previous update was at 03:40 PM ----------
guys please help !!! (3 Replies)
# for i in `cat oo`;do ls -ld $i;done
ls: /var/tmp/i: No such file or directory
ls: i: No such file or directory
ls: /var/tmp/ii: No such file or directory
ls: i: No such file or directory
ls: /var/tmp/iii: No such file or directory
ls: i: No such file or directory
ls: /var/tmp/iiii: No such... (2 Replies)
Hi All,
I have Information in the file like,
============ Interface Information ====================
+++++++++++++++++ NMInterface ++++++++++++++
ObjID:251c55a2-2257-71dd-0f68-9887a1f10000
NNMObjID:82857
EntityName:aust00m1.mis.amat.com ]
Description:ATM9/0/0-atm layer
Discovered in... (22 Replies)
I have wrriten a script to call sql script to do some work in database. However, the script couldn't be executed. The only information was: ksh: ./updt_attrib.ksh cannot execute. Please help me to identify where the problem is. I post script here for your reference. Thanks a lot.
#!/bin/ksh
... (8 Replies)
I have a shell script which takes at the command prompt options like
ss1.sh -F SCOTT -T JOHN
F- From User
T- To User
I want to pass the From User(SCOTT) Value to another script
ss2.pls (This script runs a PL/SQL Program). Depending on the FromUser value in the ss1.sh script i have to... (4 Replies)