Re: [R] How to create a string containing '\/' to be used with SED?
What do you mean by doesn't work and the \\ are removed? a - ..\\/path\\/file a [1] ..\\/path\\/file cat(a) ..\/path\/file -- David Winsemius On Nov 26, 2008, at 7:46 PM, ikarus wrote: Thanks Sean!! I followed you suggestion to use gsub() and it worked perfectly! I still can't create a string with inside \/ (e.g., a - ..\\/path\\/file doesn't work, R complains and the \\ are removed), but I don't care, gsub() does the same job as sed and without using any system call. seanpor wrote: Good morning, You do not need to quote a forward slash / in R, but you do need to quote a backslash when you're inputting it... so to get a string which actually contains blah\/blah... you need to use blah\\/blah http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-does-backslash-behave-strangely-inside-strings_003f Unless this is a very very big file you shouldn't need to go out to sed, as gsub() should work adequately... and probably quicker and cleaner. So something along the lines of.. (UNTESTED!!! since I don't have a reproduceable example) tmp1 - readLines(configurationFile) tmp1 - gsub(^instance .*, paste(instance = , data $instancePath, /, data$newInstance, sep = ), tmp1) I'm working on 50mb text files, and doing all sorts of manipulations and I do it all inside R under windows XP... reading a 50mb text file across the 100mb network and doing a gsub() on most lines takes an elapsed 16 seconds on this office desktop. hth... Regards, Sean ikarus wrote: Hi guys, I've been struggling to find a solution to the following issue: I need to change strings in .ini files that are given in input to a program whose output is processed by R. The strings to be changed looks like: instance = /home/TSPFiles/TSPLIB/berlin52.tsp I normally use Sed for this kind of things. So, inside R I'd like to write something like: command - paste(sed -i 's/^instance .*/instance = , data$instancePath, data$newInstance, /' , configurationFile, sep = ) system(command) This will overwrite the line starting with instance using instance = the_new_instance In the example I gave, data$instancePath = /home/TSPFiles/TSPLIB/ and data$newInstance = berlin52.tsp The problem is that I need to pass the above path string to sed in the form: \/home\/TSPFiles\/TSPLIB\/ However, I couldn't find a way to create such a string in R. I tried in several different ways, but it always complains saying that '\/' is an unrecognized escape! Any suggestion? Thanks! -- View this message in context: http://www.nabble.com/How-to-create-a-string-containing-%27%5C-%27-to-be-used-with-SED--tp20694319p20711848.html Sent from the R help mailing list archive at Nabble.com. __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] How to create a string containing '\/' to be used with SED?
Good morning, You do not need to quote a forward slash / in R, but you do need to quote a backslash when you're inputting it... so to get a string which actually contains blah\/blah... you need to use blah\\/blah http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-does-backslash-behave-strangely-inside-strings_003f Unless this is a very very big file you shouldn't need to go out to sed, as gsub() should work adequately... and probably quicker and cleaner. So something along the lines of.. (UNTESTED!!! since I don't have a reproduceable example) tmp1 - readLines(configurationFile) tmp1 - gsub(^instance .*, paste(instance = , data$instancePath, /, data$newInstance, sep = ), tmp1) I'm working on 50mb text files, and doing all sorts of manipulations and I do it all inside R under windows XP... reading a 50mb text file across the 100mb network and doing a gsub() on most lines takes an elapsed 16 seconds on this office desktop. hth... Regards, Sean ikarus wrote: Hi guys, I've been struggling to find a solution to the following issue: I need to change strings in .ini files that are given in input to a program whose output is processed by R. The strings to be changed looks like: instance = /home/TSPFiles/TSPLIB/berlin52.tsp I normally use Sed for this kind of things. So, inside R I'd like to write something like: command - paste(sed -i 's/^instance .*/instance = , data$instancePath, data$newInstance, /' , configurationFile, sep = ) system(command) This will overwrite the line starting with instance using instance = the_new_instance In the example I gave, data$instancePath = /home/TSPFiles/TSPLIB/ and data$newInstance = berlin52.tsp The problem is that I need to pass the above path string to sed in the form: \/home\/TSPFiles\/TSPLIB\/ However, I couldn't find a way to create such a string in R. I tried in several different ways, but it always complains saying that '\/' is an unrecognized escape! Any suggestion? Thanks! -- View this message in context: http://www.nabble.com/How-to-create-a-string-containing-%27%5C-%27-to-be-used-with-SED--tp20694319p20696613.html Sent from the R help mailing list archive at Nabble.com. __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] How to create a string containing '\/' to be used with SED?
Thanks Sean!! I followed you suggestion to use gsub() and it worked perfectly! I still can't create a string with inside \/ (e.g., a - ..\\/path\\/file doesn't work, R complains and the \\ are removed), but I don't care, gsub() does the same job as sed and without using any system call. seanpor wrote: Good morning, You do not need to quote a forward slash / in R, but you do need to quote a backslash when you're inputting it... so to get a string which actually contains blah\/blah... you need to use blah\\/blah http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-does-backslash-behave-strangely-inside-strings_003f Unless this is a very very big file you shouldn't need to go out to sed, as gsub() should work adequately... and probably quicker and cleaner. So something along the lines of.. (UNTESTED!!! since I don't have a reproduceable example) tmp1 - readLines(configurationFile) tmp1 - gsub(^instance .*, paste(instance = , data$instancePath, /, data$newInstance, sep = ), tmp1) I'm working on 50mb text files, and doing all sorts of manipulations and I do it all inside R under windows XP... reading a 50mb text file across the 100mb network and doing a gsub() on most lines takes an elapsed 16 seconds on this office desktop. hth... Regards, Sean ikarus wrote: Hi guys, I've been struggling to find a solution to the following issue: I need to change strings in .ini files that are given in input to a program whose output is processed by R. The strings to be changed looks like: instance = /home/TSPFiles/TSPLIB/berlin52.tsp I normally use Sed for this kind of things. So, inside R I'd like to write something like: command - paste(sed -i 's/^instance .*/instance = , data$instancePath, data$newInstance, /' , configurationFile, sep = ) system(command) This will overwrite the line starting with instance using instance = the_new_instance In the example I gave, data$instancePath = /home/TSPFiles/TSPLIB/ and data$newInstance = berlin52.tsp The problem is that I need to pass the above path string to sed in the form: \/home\/TSPFiles\/TSPLIB\/ However, I couldn't find a way to create such a string in R. I tried in several different ways, but it always complains saying that '\/' is an unrecognized escape! Any suggestion? Thanks! -- View this message in context: http://www.nabble.com/How-to-create-a-string-containing-%27%5C-%27-to-be-used-with-SED--tp20694319p20711848.html Sent from the R help mailing list archive at Nabble.com. __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] How to create a string containing '\/' to be used with SED?
What is the problem error message? I can say fred - blah1\\/blah2\\/blah3 and then the string looks like... cat(#, fred, '#\n', sep='') #blah1\/blah2\/blah3# If you just ask R to print it then it looks like... fred [1] blah1\\/blah2\\/blah3 when you're playing with strings and regular expressions, it's vital to understand the backslash quoting mechanism... Best regards, Sean ikarus wrote: I still can't create a string with inside \/ (e.g., a - ..\\/path\\/file doesn't work, R complains and the \\ are removed), ... snip -- View this message in context: http://www.nabble.com/How-to-create-a-string-containing-%27%5C-%27-to-be-used-with-SED--tp20694319p20713699.html Sent from the R help mailing list archive at Nabble.com. __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
[R] How to create a string containing '\/' to be used with SED?
Hi guys, I've been struggling to find a solution to the following issue: I need to change strings in .ini files that are given in input to a program whose output is processed by R. The strings to be changed looks like: instance = /home/TSPFiles/TSPLIB/berlin52.tsp I normally use Sed for this kind of things. So, inside R I'd like to write something like: command - paste(sed -i 's/^instance .*/instance = , data$instancePath, data$newInstance, /' , configurationFile, sep = ) system(command) This will overwrite the line starting with instance using instance = the_new_instance In the example I gave, data$instancePath = /home/TSPFiles/TSPLIB/ and data$newInstance = berlin52.tsp The problem is that I need to pass the above path string to sed in the form: \/home\/TSPFiles\/TSPLIB\/ However, I couldn't find a way to create such a string in R. I tried in several different ways, but it always complains saying that '\/' is an unrecognized escape! Any suggestion? Thanks! -- View this message in context: http://www.nabble.com/How-to-create-a-string-containing-%27%5C-%27-to-be-used-with-SED--tp20694319p20694319.html Sent from the R help mailing list archive at Nabble.com. __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.