Replacing Lines in a Text File: Difference between revisions
No edit summary |
No edit summary |
||
Line 4: | Line 4: | ||
This script will replace every occurrence of the line "line to replace" with the line "replacement of line" in the file called "file.txt". | This script will replace every occurrence of the line "line to replace" with the line "replacement of line" in the file called "file.txt". | ||
The script can be used to delete lines as well, by using "" as the replacement. Note however that an empty line is added to the file each time the search string is found. You can easily transform the script into one that deletes lines from a file, by not writing a line to the temp file if the search string is found in the target file. | The script can be used to delete lines as well, by using "" as the replacement. Note however that an empty line is added to the file each time the search string is found. You can easily transform the script into one that deletes lines from a file, by not writing a line to the temp file if the search string is found in the target file (see below ["Deleting Lines from a Text File"]). | ||
'''Description of variables:''' | '''Description of variables:''' | ||
Line 33: | Line 33: | ||
CopyFiles /SILENT $R0 "file.txt" ; copy temp file to target file | CopyFiles /SILENT $R0 "file.txt" ; copy temp file to target file | ||
Delete $R0 ; delete temp file</highlight-nsis> | Delete $R0 ; delete temp file</highlight-nsis> | ||
== Deleting Lines from a Text File == | |||
<highlight-nsis>... | |||
StrCmp $2 "line to remove$\r$\n" loop 0 ; if search string (with CR/LF) is found, goto loop | |||
StrCmp $2 "line to remove" loop 0 ; if search string is found at the end of the file, goto loop | |||
...</highlight-nsis> | |||
[[Category:Text Files Manipulation Functions]] | [[Category:Text Files Manipulation Functions]] |
Latest revision as of 11:33, 2 September 2005
Author: KiCHiK (talk, contrib) |
Description
This script will replace every occurrence of the line "line to replace" with the line "replacement of line" in the file called "file.txt".
The script can be used to delete lines as well, by using "" as the replacement. Note however that an empty line is added to the file each time the search string is found. You can easily transform the script into one that deletes lines from a file, by not writing a line to the temp file if the search string is found in the target file (see below ["Deleting Lines from a Text File"]).
Description of variables:
$0 is a handle to the target file
$R0 is the name of a temp file
$1 is a handle to the temp file with the name $R0
$2 is the line that was read from the target file, and that is written to the temp file either changed or unchanged
The Script
ClearErrors FileOpen $0 "file.txt" "r" ; open target file for reading GetTempFileName $R0 ; get new temp file name FileOpen $1 $R0 "w" ; open temp file for writing loop: FileRead $0 $2 ; read line from target file IfErrors done ; check if end of file reached StrCmp $2 "line to replace$\r$\n" 0 +2 ; compare line with search string with CR/LF StrCpy $2 "replacement of line$\r$\n" ; change line StrCmp $2 "line to replace" 0 +2 ; compare line with search string without CR/LF (at the end of the file) StrCpy $2 "replacement of line" ; change line FileWrite $1 $2 ; write changed or unchanged line to temp file Goto loop done: FileClose $0 ; close target file FileClose $1 ; close temp file Delete "file.txt" ; delete target file CopyFiles /SILENT $R0 "file.txt" ; copy temp file to target file Delete $R0 ; delete temp file
Deleting Lines from a Text File
... StrCmp $2 "line to remove$\r$\n" loop 0 ; if search string (with CR/LF) is found, goto loop StrCmp $2 "line to remove" loop 0 ; if search string is found at the end of the file, goto loop ...