I would like to replace Line 187 of my file named run_example.
The original line is below, including the spaces:
I want it to become something like
or
where the number is stored in a variable called $bulksize . This variable increments properly in my for loop.
Firstly, by opening the file for read and write at the same time you are likely to simply zero it. You are better to output to a new file, or use sed or perl inline editting.
Actually, I didn't realize this would make a difference, but I have a parent directory called [myExamples] that contains my scripts (prep) and (run_example).
I have already made subdirectories of [myExamples], and I can run (prep) to copy (run_example) into each subdirectory.
(run_example) has a few lines that look similar to Line 187, plus a lot of other hulababoos...
The problem is to automatically replace Line 187 of (run_example) in each subdirectory, with a different value of $bulksize (see top message)...
Below is a snippet of (prep) -
Last edited by bluesmodular; 05-16-2010 at 03:20 PM..
Using ls to generate the for loop's list is often a poor approach. If there are any IFS characters (by default, space, tab, and newline) in the resulting filenames, they will be mangled. Often, when making use of some of ls' options (recursive listing, for example), this shortcoming is disregarded if troublesome filenames aren't expected. However, in this particular case, ls is completely unnecessary; you can generate a list of the necessary files with a safe, simple glob.
As for editing each file in place, you can do so with ed:
Regards,
Alister
Follow-up question - By similarly using printf and ed, how would I replace a line that contains only a number, e.g. 6.00, with another number stored in variable $bulksize or $half ?
I guess I don't understand all the parts in this regular expression
'187s/= [^,]*/= %s/\nwq\n'
I know 187 is the line number, the s after that is substitution, and ^, matches a comma in the beginning? Or anything that's not a comma? Not sure what the rest of it means... where can I find a good reference for this?
Thanks!!
Last edited by bluesmodular; 05-17-2010 at 01:35 AM..
I am learning SED and just following the shell scripting book, i have trouble understanding the grep and sed statement,
Question : 1
__________
/opt/oracle/work/antony>cat teledir.txt
jai sharma 25853670
chanchal singhvi 9831545629
anil aggarwal 9830263298
shyam saksena 23217847
lalit... (7 Replies)
Hello All,
I'm trying to extract the lines between two consecutive elements of an array from a file.
My array looks like:
problem_arr=(PRS111 PRS213 PRS234)
j=0
while } ]
do
k=`expr $j + 1`
sed -n "/${problem_arr}/,/${problem_arr}/p" problemid.txt
---some operation goes... (11 Replies)
Hi all,
I want to get a substring from a string based on given delimiter, for example:
str="foo|bar|baz" with delimiter "|",
I want to get one substring at each time with the order number the substring in the whole string,
given 1 to get "foo",
given 2 to get "bar",
given 3 to get "baz",
I... (2 Replies)
Hi all,
How am I read a file, find the match regular expression and overwrite to the same files.
open DESTINATION_FILE, "<tmptravl.dat" or die "tmptravl.dat";
open NEW_DESTINATION_FILE, ">new_tmptravl.dat" or die "new_tmptravl.dat";
while (<DESTINATION_FILE>)
{
# print... (1 Reply)
Hi ,
I am learing sed
echo abc 123 def 456 | sed 's|\(*\) \(*\)|\1|'
is returning abc def 456
i was hoping abc def "\1" should only print the occurence of the first pattern
but according to my understanding it is just removing the first occurence of the second pattern... (7 Replies)
please consider this:
echo "11111*X*005010X279~ST*270*1111111*005010X279~BHT*0011*11" | sed 's/.*\(005010X(\d)(\d)(\d)*\).*$/\1/'i'm searching for first occurrence of 005010X while leaving rest of characters out.
:confused:
any tips? thnx in advance guys. (7 Replies)
Hi
I need to get text that are within ""
For example
File:
asdasd "test test2" sadasds asdda asdasd "demo demo2"
Output:
test test2 demo demo2
Any help is good
Thank you (12 Replies)
Hi!
I'm trying to write a regexp but I have no luck...
I have a string like this:
param1=sometext¶m2=hello¶m3=bye
Also, the string can be simply:
param2=hello
I want to return the value of param2: "hello".
How can I do this?
Thanks. (3 Replies)
Hi,
I'm trying following:echo "test line XA24433 test" | sed 's/.*X\(.*\)/X\1/'
XA24433 test While I want the output as: XA24433
I want to grab the words starting with letter X till the next space, this word can be anywhere in the line. (9 Replies)