BASH: replace strings in on file by the strings in another one
ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
I want to replace the symbol "FRAC" in each line of the first file by the 3 numbers in the corresponding line of the second file. The line numbers should match among two files. And when the 3 numbers are put in the first file, they should keep in the same format separated by "," but not space.
This is because the second file has an extra space at the end of the lines, so that they are substituted with a comma by the gsub function. You can try to add another gsub to remove them before doing the substitution, e.g. (see the part highlighted in red)
This is because the second file has an extra space at the end of the lines, so that they are substituted with a comma by the gsub function. You can try to add another gsub to remove them before doing the substitution, e.g. (see the part highlighted in red)
Why it can locate to the last space? Because there is no "^" in the regular expression? And why you need a "+" before "$"?
The regular expression
Code:
/ +$/
matches one or more (+) spaces ( ) at the end of each line ($). You don't need the (^) sign if you don't want to match anything at the beginning of the string. Regarding the plus sign I added it to take care of multiple spaces at the end of the lines (if any) but you don't really need it if you're sure the file contains at most one space character at the end of every line.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.