Home NT Commands
NT Syntax

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



Simon Sheppard
SS64.com