|
|
MUNGE.exe (NT4 Resource Kit)
Find and Replace text within file(s) Notice that munge looks for a complete string (delimited with spaces) - it won't match part of a string.
Syntax MUNGE ScriptFile [options] FilesToMunge... Key ScriptFile : A text file containing the strings to Find & Replace FilesToMunge : One or more files to be changed (may use wildcards) Editing options -q : Query only - don't actually make changes. -e : Query only - display entire line for each match -o : Query only - just display filename once on first match -k : Case - Case sensitive scriptFile -r : Recurse into subfolders -m : Collapse multiple carriage returns into one -@ : Remove null characters -n : Neuter - Surround all strings with TEXT() -L : Literals - Dont process any quoted text (excludes comments) -l : Literals - Dont process any quoted text (includes comments too) Display options -i : Just output summary of files changed at end -c : If no munge of file, then check for cleanlyness -v : Verbose - show files being scanned Destination options -t : Don't create .bak files -a : Use ATTRIB -r command for files that are readonly -s : Use OUT command command for files that are readonly (OUT is not a standard documented NT command!) -f : Use -z flag for SLM OUT command -u undoFileName : Generate an undo MUNGE script file for the changes made -z : Truncate file after a Ctrl-Z character Each line in the ScriptFile should take one of the following 3 forms: oldName newName "oldString" "newString" -F .Ext Name. Name.Ext In the script file -F may be used to restrict the files processed by MUNGE when FilesToMunge is a wildcard. -F [Name].[Ext]
When FilesToMunge (on the command line) is a specific
file then this filename will override any -F setting.
When MUNGE is used with a wildcard
to modify multiple files then you must specify -F in the scriptfile.
MUNGE will create a backup file called .BAK, for this reason do not process
files that have a .BAK extension unless you specify -t (dont create backup)
Example:
MUNGE myChanges.ini FileToMunge.txt
Where myChanges.ini contains the following
:::::::::::: -F FileToMunge.txt "Driver32=C:\WINNT\System32\odbc16.dll" "Driver32=C:\WINNT\System32\odbc32.dll" "Driver32=C:\WINNT\System32\jct16.dll" "Driver32=C:\WINNT\System32\jct32.dll" ::::::::::::
Notice that the whole string has to be spelled out even though
only a small part is being changed. When changing a large or complex file this
is considered a good thing.
When writing a .ini script for munge watch out for trailing spaces.
In the onscreen feedback a TOKEN means your script may replace one word
with another, while a LITERAL STRING means your script will replace one "Quoted
String" with "Another Quoted string"
Munge script files can contain multiple string replacements - these will
be applied in one pass only.
In other words if you replace A with B and also replace B with C. Then A will
not be changed into C (unless you run the MUNGE command twice.)
Alternatives
Munge.exe has been dropped from the
Resource Kit in Windows 2000 and above.
For some tasks you may be able to use the FOR
/F command
to parse a text file and ECHO lines to a new file. Alternatively, just
Google for one of the many Search/Replace
utilities available on the net, some free options are gawk
for Windows, sed
for Windows or change.exe from
the Microsoft
Installation Framework.
Bugs:
Munge does not work reliably for files greater than 2 Mb.
When using munge,
make sure that there aren't any blank lines at the end of the ScriptFile.
Munge will not read unicode text.
"I understand that change is frightening for people, especially if there's
nothing to go to. It's best to stay where you are. I understand that." - Princess
Diana
Related Commands:
FOR - Conditionally perform a command several times.
FIND - Search for a text string in a file
FINDSTR - Search for strings in files
QGREP - Search file(s) for lines that match a given
pattern.
Equivalent Linux BASH commands:
gawk - Find and Replace text within file(s)
sed - Stream Editor - Find and Replace text within file(s)
tr - Translate, squeeze, and/or delete characters