Add string to middle of a file


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Add string to middle of a file
# 8  
Old 06-14-2006
Hi Shereenmoter,

I got exactly the same error:

sed: -e expression #1, char 3: Extra characters after command

This is what ive written so far:


#Get the number of lines in the file
MyVar="`wc -w NewFile | awk '{print $1}'`"

#Get The middle of the file
Middle=$ expr $MyVar / 2

#sed -e "${Middle}a $Text" NewFile

sed ${Middle}i'\Chief' NewFile


N.B. Unbeliever, i know this is still not using your method for finding the middle of the file, just testing stuff at the moment.
# 9  
Old 06-14-2006
Actually, can someone just show me a simple sed command for adding "Hello" to a file called "MyFile" at line 5. Forget the scripts just a single command to add the word hello at line 5.

Thanks, Chris.
# 10  
Old 06-14-2006
Quote:
#Get the number of lines in the file
MyVar="`wc -w NewFile | awk '{print $1}'`"

#Get The middle of the file
Middle=$ expr $MyVar / 2

#sed -e "${Middle}a $Text" NewFile

sed ${Middle}i'\Chief' NewFile
Above line should look like this:
Code:
sed ${middle}i'\
Chief' NewFile

where you have used my given code? and wc -w will give you number of words not number of lines in a file. This will insert "Hello" at line 5 of your file, pls use it as it is:
Code:
sed '5i\
hello' yourfile

I'll modify your script to make it work, you don't want that though Smilie
Code:
#Get the number of lines in the file
MyVar="`wc -l NewFile | awk '{print $1}'`"

#Get The middle of the file
Middle=`expr $MyVar / 2`

sed ${Middle}i'\
Your Text Goes here, dont use variable here' NewFile

Regards,
Tayyab
# 11  
Old 06-14-2006
The problem is you're using an old version of sed (probably on Solaris or HPUX or something similar). The examples you've been given work fine with GNU sed.

The simple answer to your last question is to put the following in a file called say myscript.sed:
Code:
5a\
Hello

And if for example your original data was in a file call mydata.txt you would issue the following command
Code:
sed -f myscript.sed mydata.txt > mynewdata.txt

You can then move the new file over the old one should you not wish to keep the original file. This should work for jsut about any version of sed.
# 12  
Old 06-14-2006
Sorry, i thought the new line was accidental.

Your script shows at the end:

"Your Text Goes here, dont use variable here' NewFile"

How would I use a variable there then? As I said I wanna pass a string variable to the script and add that to the middle of the file, not hard code the text into the script.

Chris.
# 13  
Old 06-14-2006
Get GNU sed from www.sunfreeware.com (for Solaris fo course). If you use that rather than /usr/bin/sed then all the original exmaples should work fine.
# 14  
Old 06-14-2006
create a file: t.sed that has just this, no extra lines, nothing:
Code:
5i\
hello

First ten line of file u.lis:
Code:
kcsdev:/home/jmcnama> sed '1,10!d' u.lis                  
000366202 0929910 436951                                  
002596922 0121878 436952                                  
003561604 0131361 436953                                  
006039300 0154949 436954                                  
009671002 0186675 436955                                  
009820002 0430520 436956                                  
010861409 0343742 436957                                  
015852300 0241647 436958                                  
015867300 0241666 436959                                  
015919001 0242218 436960

inserting hello at line 5
Code:
kcsdev:/home/jmcnama> sed '1,10!d' u.lis | sed -f t.sed   
000366202 0929910 436951                                  
002596922 0121878 436952                                  
003561604 0131361 436953                                  
006039300 0154949 436954                                  
hello                                                     
009671002 0186675 436955                                  
009820002 0430520 436956                                  
010861409 0343742 436957                                  
015852300 0241647 436958                                  
015867300 0241666 436959                                  
015919001 0242218 436960

If you have a file that has ten lines of data:
Code:
 sed -f t.sed my10linefile

 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Views How to replace a CRLF char from a variable length file in the middle of a string in UNIX?

My sample file is variable length, with out any field delimiters. It has min of 18 chars length and the 'CRLF' is potentially between 12-14 chars. How do I replace this with a space? I still want to keep end of record, but just want to remove these new lines chars in the middle of the data. ... (7 Replies)
Discussion started by: chandrath
7 Replies

2. UNIX for Dummies Questions & Answers

Map a string in a the middle of a record

Hi Folks! I hope you can help me figure this out. I need to print a record which contains the contents of a config file. The contents of the config file should be found within the 21st and the 30th position of the fixed width reference file. Config File: aaaa bbbb cccc Reference... (3 Replies)
Discussion started by: kokoro
3 Replies

3. Linux

Remove newline in middle of string

my file input is with tab as delimiter, and in every line, there would be a skip of line with an unexcepted newline breaker. I'd like to remove this \n and put the information in the same line. INPUT a1 b1b2 c1 c2 d1 a2 b3 c3 d4 OUTPUT a1 b1b2 c1c2 ... (9 Replies)
Discussion started by: kinkichin
9 Replies

4. UNIX for Dummies Questions & Answers

Splitting a string and putting another string in the middle?

Hello all! I'm trying to put together a small script that will take in a file name and attach a datestamp to the end of it (but before the file type extension). To illustrate... Before: filename.txt anotherfilename.txt After: filename_20090724.txt anotherfilename_20090724.txt ... (7 Replies)
Discussion started by: jisoo411
7 Replies

5. Shell Programming and Scripting

stripping certain characters in at the middle of a string

I am trying to strip out certain characters from a string on both (left & right) sides. For example, line=see@hear|touch, i only want to echo the "hear" part. Well i have tried this approach: line=see@hear|touch templine=${line#*@} #removed "see@" echo ${templine%%\|*} #removed... (4 Replies)
Discussion started by: mcoblefias
4 Replies

6. Shell Programming and Scripting

Script to add a single line to middle of text file.

I've got a configuration file that is filled with xml text statements for example: <...../> <...../> <...../> <data id="java-options" value="-server -Djava.security.policy..../> <...../> <...../> <...../> I want to write a korn shell script that will go to this specific line and add a... (2 Replies)
Discussion started by: progkcp
2 Replies

7. Shell Programming and Scripting

add text in the middle of file

Can anyone help me pls? I want to add a text into the middle of file. I've writtenthe following script text to add="$1" file="$2" lines=$(wc -l $2) half_lines=$(expr $lines / 2) head -$half_lines $2 > temp echo "text to add" >> temp ((half_lines=$half_lines + 1)) tail -$half_lines $2... (6 Replies)
Discussion started by: relle
6 Replies

8. Shell Programming and Scripting

add a string in the middle of the file

i want to add a string in a very top of a file without using VI or SED or AWK this is what ive done: (echo '0a'; echo 'LINE OF TEXT'; echo '.'; echo 'wq') | ed -s myfile to add astrng right in the middle i could have count the lines of the file and just chenge the address. ... (6 Replies)
Discussion started by: ciroredz
6 Replies

9. Shell Programming and Scripting

Problem to add the string(without sed & awk) into the middle of file

Hi, I have tried many times to add the string into the first line of the file or the middle of the file but could not find the solution. I first tried by $echo "paki" >> file This code only append paki string at the end of file "file" but how can i add this "paki" into the first line or... (5 Replies)
Discussion started by: ali hussain
5 Replies

10. Shell Programming and Scripting

Add Lines in middle of file

I need to add a new lines with certain data, to an existing file, every 5 lines in the file. There is no way to find any distinct charater pattern so I will have to do a line count and then insert the new line. I think using awk or sed is what I need to do. Any help is appreciated. Kunder (2 Replies)
Discussion started by: kunder
2 Replies
Login or Register to Ask a Question