Replacing every line that ends in X with Y
-
I need to replace every line that ends in a certain string of characters (.png in this case) with a different line - I’ve tried to figure out how it can be done with regex however I can’t seem to get my head around how regex works. I can also post a snippet of the file (although it’s nearing 400,000 lines which is why I can’t do it manually). Any help with this is greatly appreciated
-
Hello, @aulumen-eulogy,
Numerous things can be achieved with regular expressions, indeed ! Of course, we need some additional information to build an accurate search/replacement which could meet your needs ;-))
Just a guess : I suppose that your file contains lines which end with a picture file name, having
.pngformat and that you want to change these names with, …let’s say, the.jpgextension ! If so :-
Open the Replace dialog (
Ctrl+ H) -
SEARCH
\.png$ -
REPLACE
.jpg -
Click, preferably, the
Wrap aroundoption -
Select the
Regular expressionsearch mode -
Click on the Replace All button
Notes :
-
The dot character must be escaped with the backslash char
\, as it’s a meta-character, with special signification, in regexes -
At the end, the
$symbol is an assertion, which means that the literal string .png must be located at the end of each line, in order to get a match
Best Regards,
guy038
-
-
Thank you for the in-depth answer, although it’s not precisely what I’m looking for - Say I have 4 lines:
imageone.png
imagetwo.jpg
unrelatedline
imagethree.png
Instead of replacing the file extension with something else, I need to replace any lines ending in .png with a different line (such as imagereplaced.png), changing the previous lines like so:
imagereplaced.png
imagetwo.jpg
unrelatedline
imagereplaced.pngI’m sorry if I wasn’t clear with this in my original post
-
Hi, @aulumen-eulogy and All,
Sorry, but there’s still a problem ! In your list of replaced lines, below :
imagereplaced.png imagetwo.jpg unrelatedline imagereplaced.pngThere are two identical lines
imagereplaced.png?!Thus, two possibilities :
A) The part “replaced” is really a literal string and you do not mind having duplicates names of file. In that case, the following regex S/R should work :
-
SEARCH
(?i)\bimage.+\.png$ -
REPLACE
imagereplaced.png
Notes :
-
The
(?i)part is an in-line modifier meaning that the search is insensitive to the case of letters -
The
\bpart is as assertion, saying that the string image must be preceded with a non-word character ( EOL, blank or symbol character ) -
The
.+represents the longest area of characters, between the two strings image and .png, which must end each line, due to the final$meta-character
B) The part, naned “replaced”, is different for each file. In that case, again… some explanations would be welcome :-))
Cheers,
guy038
-
-
@guy038
Many thanks for the help, A worked wonderfully (I replaced image with [a-z] so it’d work with all of the different files I needed to replace, but aside from that it was flawless).
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login