Visit Jeremy's Blog.
 Home Forums HCL Reviews Tutorials Articles Register Search Today's Posts Mark Forums Read
 LinuxQuestions.org Help with a basic UNIX script
 Linux - Newbie This Linux forum is for members that are new to Linux. Just starting out and have a question? If it is not in the man pages or the how-to's this is the place!

Notices

05-30-2006, 04:12 PM   #16
mike9287
Member

Registered: May 2006
Location: North England
Distribution: Mandriva
Posts: 64

Original Poster
Rep:

Quote:
 Originally Posted by Tinkster Nope sed -i tells sed to modify the file in-place, and the text to be inserted comes behind the insert-command (i). sed -i '5i\ The middle' myexistingfile.txt is what you want to do. Cheers, Tink

Thanks for reply, I tried what you said and I get error: invalid option --i

Any idea what I might be doing wrong? I tried it on command line and in a file I made with cat then executed with 'sh'

Thanks

Mike

05-30-2006, 04:33 PM   #17
Tinkster
Moderator

Registered: Apr 2002
Location: in a fallen world
Distribution: slackware by choice, others too :} ... android.
Posts: 23,067
Blog Entries: 11

Rep:
Quote:
 Originally Posted by mike9287 Thanks for reply, I tried what you said and I get error: invalid option --i Any idea what I might be doing wrong? I tried it on command line and in a file I made with cat then executed with 'sh' Thanks Mike
Probably using an ancient sed ... in that case try
Code:
#!/bin/sh
sed  '5i\
The middle' myexistingfile.txt > myexistingfile.txt.tmp
mv myexistingfile.txt.tmp myexistingfile.txt

Cheers,
Tink

05-31-2006, 05:24 AM   #18
mike9287
Member

Registered: May 2006
Location: North England
Distribution: Mandriva
Posts: 64

Original Poster
Rep:
Quote:
 Originally Posted by Tinkster Probably using an ancient sed ... in that case try Code: #!/bin/sh sed '5i\ The middle' myexistingfile.txt > myexistingfile.txt.tmp mv myexistingfile.txt.tmp myexistingfile.txt Cheers, Tink

Hey Tink, Thanks again.

I am at work at the moment so I havent got a shell handy. I took a look into iserting with sed using options "i" and "a" and found "i" appends before the line and "a" after the line, this should mean I can use the same script with '1i\ in my first script as well as in this one.

what does "#!/bin/sh" actually tell the shell at the start of the script? just so I know for future reference.

Thanks

Mike

05-31-2006, 05:48 AM   #19
Tinkster
Moderator

Registered: Apr 2002
Location: in a fallen world
Distribution: slackware by choice, others too :} ... android.
Posts: 23,067
Blog Entries: 11

Rep:
Quote:
 Originally Posted by mike9287 Hey Tink, Thanks again. I am at work at the moment so I havent got a shell handy.
What a shame - you work in the wrong place! ;}

Quote:
 Originally Posted by mike9287 what does "#!/bin/sh" actually tell the shell at the start of the script? just so I know for future reference.
If a text-file is marked executable and has a
#!/path/to/executable
in it the bash will try to use the executable in there
to run the rest of the file as a script .

Normally you'd have to invoke a script (if it didn't
have the line) e.g. like
sh my_script
./my_script

Cheers,
Tink

05-31-2006, 06:47 AM   #20
mike9287
Member

Registered: May 2006
Location: North England
Distribution: Mandriva
Posts: 64

Original Poster
Rep:
Quote:
 Originally Posted by Tinkster What a shame - you work in the wrong place! ;}

^^ Tell me about it.. I work in retail and I am not even supposed to use the Internet but only the companys Intranet, I want out of this job so bad, thats why I am here trying to learn UNIX, I want to become a Java programmer and need to learn UNIX and SQL before the training company will learn me Java.

Mike

05-31-2006, 02:21 PM   #21
Tinkster
Moderator

Registered: Apr 2002
Location: in a fallen world
Distribution: slackware by choice, others too :} ... android.
Posts: 23,067
Blog Entries: 11

Rep:
Quote:
 Originally Posted by mike9287 ^^ Tell me about it.. I work in retail and I am not even supposed to use the Internet but only the companys Intranet, I want out of this job so bad, thats why I am here trying to learn UNIX,
Good on yah.

Quote:
 Originally Posted by mike9287 I want to become a Java programmer and need to learn UNIX and SQL before the training company will learn me Java. Mike
Sorry, can't resist that one; it's "will teach me Java",
learn is what you do, teach is what they do ;}

Cheers,
Tink

05-31-2006, 05:28 PM   #22
mike9287
Member

Registered: May 2006
Location: North England
Distribution: Mandriva
Posts: 64

Original Poster
Rep:
Quote:
 Originally Posted by Tinkster Good on yah. Sorry, can't resist that one; it's "will teach me Java", learn is what you do, teach is what they do ;} Cheers, Tink
Hehe, reminds me of my english teacher when people use to ask to lend a ruler rather than borrow

I tried the script and still get the invalid option --i. I thought it might have been the shell I
was using which is part of the "putty" program which I use through my windows account, I then logged into my Mandriva Korn shell and got the same kind of trouble, in Mandriva I get this

sed: -e expression #1 char 10: unknown command m'

my script was run from a file saved in cat as follow:

#!/bin/sh
sed '2i\
myfile > myfile.tmp
mv myfile.tmp myfile

Thanks

Mike

Last edited by mike9287; 05-31-2006 at 05:29 PM.

05-31-2006, 05:41 PM   #23
Tinkster
Moderator

Registered: Apr 2002
Location: in a fallen world
Distribution: slackware by choice, others too :} ... android.
Posts: 23,067
Blog Entries: 11

Rep:
Quote:
 Originally Posted by mike9287 Hehe, reminds me of my english teacher when people use to ask to lend a ruler rather than borrow :)
Aye - English is quite a neat and rich language, and it makes
me cringe to see the natives butcher it like that ;}

We have a shop call Mr Rentals here where you can hire all
kinds of appliances (dish-washers, TV sets, ... ) ... they recently
"Mr Rentals now rents computers!". I was so tempted to ask them
how much a day they'd pay for my athlon. ;}

Quote:
 Originally Posted by mike9287 I tried the script and still get the invalid option --i. I thought it might have been the shell I was using which is part of the "putty" program which I use through my windows account, I then logged into my Mandriva Korn shell and got the same kind of trouble, in Mandriva I get this sed: -e expression #1 char 10: unknown command m' my script was run from a file saved in cat as follow: #!/bin/sh sed '2i\ add me to the middle' myfile > myfile.tmp mv myfile.tmp myfile Thanks Mike
That's a weird error message to get there; the script IS faulty, but it
shouldn't run to completion.

You need to either a) join these lines
Code:
 add me to the middle'
myfile > myfile.tmp
to look like
Code:
 add me to the middle' myfile > myfile.tmp
or b) add a backslash to the first one (like so)
Code:
 add me to the middle' \
myfile > myfile.tmp

Cheers,
Tink

 06-01-2006, 03:46 PM #24 mike9287 Member   Registered: May 2006 Location: North England Distribution: Mandriva Posts: 64 Original Poster Rep: Hi again. I tried the ways you mentioned but still dont get the desired results, I am on the part of the course which covers sed and grep etc and it say the following syntax should be used with sed: sed [-n][-e]'command' file(s) and command being as : [address]i\text //to insert which is basically what you showed me and what I have tried to do. I tried this on the command line which as far as I can see follows the above syntax: sed -e '2i\put me in the middle' myfile also this sed '2i\put me in the middle' myfile and this sed -e '2i\put me in the middle\'myfile and this sed -e '2i\put me in the middle' > myfile as well as using sh to execute my script after writing it in cat. One of the errors I am getting now is: sed -e expression #1, char 4: extra characters after command Anyone got any ideas what I am doing wrong? Thanks for looking Mike
 06-01-2006, 04:51 PM #25 mike9287 Member   Registered: May 2006 Location: North England Distribution: Mandriva Posts: 64 Original Poster Rep: whooo hooo!! I managed to figure this out, I found a guide on the IBM website and with what I have learned from this thread I came up with this script: echo '2i\ This is the line I have been trying to insert for ages' > tempfile sed -f tempfile myfile rm tempfile and bingo it works, thanks to all who helped and many thanks to Tinkster the human grammar and syntax compiler who is watching your every sentence - so beware! thanks mate, would have gave up long ago if it wasnt for your help Mike
 06-01-2006, 05:19 PM #26 Tinkster Moderator   Registered: Apr 2002 Location: in a fallen world Distribution: slackware by choice, others too :} ... android. Posts: 23,067 Blog Entries: 11 Rep: Well, I'm glad it works in the end, but I still don't understand why it doesn't do the version I posted. It's perfectly sane, and works on three different distros (SLES9, Debian Sarge and Slack 10.2) I can get my paws on the moment, plus in solaris 10 and 8 :} What distro are you using again, with which version of sed? Cheers, Tink
06-01-2006, 05:38 PM   #27
mike9287
Member

Registered: May 2006
Location: North England
Distribution: Mandriva
Posts: 64

Original Poster
Rep:
Quote:
 Originally Posted by Tinkster Well, I'm glad it works in the end, but I still don't understand why it doesn't do the version I posted. It's perfectly sane, and works on three different distros (SLES9, Debian Sarge and Slack 10.2) I can get my paws on the moment, plus in solaris 10 and 8 :} What distro are you using again, with which version of sed? Cheers, Tink
Hi, I have windows on one partition and Mandriva on the other, although I tried early on with Mandriva I have been using a program (as recommended by the Academy) called "Putty" through my windows account, the Academy uses Suse on there servers. Putty is a telnet/ssh client and I use it to connect to the academys servers. In manual it says "sed(1) 1998" which I would figure is probably and old version.

Thanks again

Mike

http://www.chiark.greenend.org.uk/~sgtatham/putty/

06-01-2006, 06:43 PM   #28
Tinkster
Moderator

Registered: Apr 2002
Location: in a fallen world
Distribution: slackware by choice, others too :} ... android.
Posts: 23,067
Blog Entries: 11

Rep:
Quote:
 Originally Posted by mike9287 Hi, I have windows on one partition and Mandriva on the other, although I tried early on with Mandriva I have been using a program (as recommended by the Academy) called "Putty" through my windows account, the Academy uses Suse on there servers. Putty is a telnet/ssh client and I use it to connect to the academys servers. In manual it says "sed(1) 1998" which I would figure is probably and old version. Thanks again Mike http://www.chiark.greenend.org.uk/~sgtatham/putty/
Hi Mike ...

OK, now my last question :)

I assume that you're copying & pasting from a winDOHs
browser to the linux box via putty?

In that case, the screwed-up error message may well
stem from the DOS CR/LF combos :}

In the ssh session try "dos2unix your_script" with the
original content, and then run it again.

I have that idea that the ^M DOS files will have on each
end of a line may be confusing sed ;}

Cheers,
Tink

06-02-2006, 03:14 AM   #29
mike9287
Member

Registered: May 2006
Location: North England
Distribution: Mandriva
Posts: 64

Original Poster
Rep:
Quote:
 Originally Posted by Tinkster Hi Mike ... OK, now my last question I assume that you're copying & pasting from a winDOHs browser to the linux box via putty? In that case, the screwed-up error message may well stem from the DOS CR/LF combos :} In the ssh session try "dos2unix your_script" with the original content, and then run it again. I have that idea that the ^M DOS files will have on each end of a line may be confusing sed ;} Cheers, Tink
Yo, Nope I am just using the good ol' keyboard, the shell has a fit when I tried to cut and paste. I will try what you said when I get back home though, I can't understand what I was doing wrong either, every guide on sed I found basically operated as you suggested but on the IBM site they recommended a script file that you would call with the -f option, even the academy tutorials were the same as you explained and I couldnt get them to work either.

ta
Mike

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is Off HTML code is Off Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post sathish80 Linux - Newbie 5 03-24-2006 02:45 PM cxy0481 Programming 9 11-20-2005 09:15 AM dark_light Linux - Newbie 7 04-04-2002 07:33 PM gopi_20us Programming 2 03-11-2002 07:45 AM Daniel Programming 10 07-05-2001 01:17 PM

LinuxQuestions.org

All times are GMT -5. The time now is 10:58 AM.

 Contact Us - Advertising Info - Rules - LQ Merchandise - Donations - Contributing Member - LQ Sitemap -