MED(1NCARG)
π MED(1NCARG) β NCAR GRAPHICS π
β¨ NAME β¨
Okay so med is the NCAR CGM metafile frame editor, and she's iconic. Periodt.
β¨ SYNOPSIS β¨
Vibe check, bestie:
med [ -e command ]* [ -f sfilename ] [ -l local_dir ] [ -V ] [ filename]
β¨ DESCRIPTION β¨
med is a frame-level, metafile editor designed to resemble syntactically UNIX's sed(1) and ed(1). She operates on a copy of filename, called a buffer, and overwrites a file only when you issue the w (write) command. No cap. med provides line oriented editing commands to display or delete frames from the buffer, to move, copy or merge frames within the buffer, or to write frames from and read frames into the buffer. By default med reads in commands from standard input. It's giving editor energy.
β¨ OPTIONS β¨
Let's get into the flags, bestie:
-e commandβcommandis a singlemedcommand. The validmedcommands are discussed in the Commands section below. Multiple-eoptions may appear on a single command line. Be careful to use quotes if your command contains spaces or metacharacters that might be interpreted by the shell. When this option is usedmeddoes not enter interactive mode. It simply performs the given commands and then exits. She just does the thing and dips.-f sfilenameβ Execute themedline-separated list of commands in the filesfilename. After the commands are exhaustedmedwill exit.-l local_dirβ Uselocal_diras the tmp directory for scratch disk space. If this option is not specifiedmedwill use the value of the$NCARG_TMPor the$TMPDIRenvironment variable. Seencargintro(1ncarg)for a discussion on NCAR Graphics environment variables.-Vβ Print the version number and then exit. Slay, now you know.
β¨ USAGE β¨
π Command Structure
med commands attempt to have a syntactically identical form to those of ed(1) or sed(1). Commands consist of an optional address or two optional, comma separated, addresses, followed by a command, which may be abbreviated, possibly followed by a third address or a command specific argument list:
[ address [, address ] ] command [ address | args ]
If only one address is specified, operations are performed on that frame. If two addresses are specified, med performs the operation on the inclusive range of frames. If no address is specified then the current frame is used as a default. The exception to this are the w (write) and the a (append) commands. The default address for w is the entire buffer.
For example, 1,10p means βprint (display) frame 1 through 10β (two addresses), d means βdelete the current frameβ (no address implies the current frame used as default), and 1,5c5 means βappend a copy of frames 1 through 5 at frame 5β (three addresses). The meaning of argument varies for each operation. In med's current state the only valid argument is a filename β for the write, w, command for instance, argument is the name of the file to write to.
Unlike its friends ed(1) and sed(1) med attempts to be fairly user friendly. If an invalid or ambiguous command is given med will tell you so. If med thinks it recognizes a command with invalid arguments a usage statement for the offending command is given. If a particular command fails and med is smart enough to figure out why it will tell you. med will almost ALWAYS immediately terminate when an error occurs while processing commands from a file or the command line. Help is available by using the h command. Usage statements for a particular command may be obtained with: h command name.
πΈ Addresses
Frames can be addressed in several ways:
nnnβ By frame number. Frames in the buffer are numbered relative to the start of the buffer. The first frame is frame 1.$β The last frame of the buffer..β The current frame.medkeeps track of the frame on which you last performed an operation. This frame is called the current frame. You can address this frame by typing a βdotβ character.Β±nβ By relative frame number. Address the frame number that isnframes higher, ornframes lower than the current frame.addressΒ±nβ An address followed by a plus sign (+) or a minus sign (-), followed by a decimal number, specifies that address plus or minus the indicated number of frames. If the address is omitted, the current frame is used as the base. For example,31-3'addresses frame 28 in the buffer.
If you do not specify an address for a command to operate on, a command that requires an address supplies one by default, usually the current frame.
A pair of addresses separated by a comma signifies an inclusive range of frames, and the current frame is not changed unless the command changes it.
π Commands
Only one command may appear per line. Commands may accept zero, one or two addresses, followed by possibly a third address or an argument. Commands that accept up to two addresses regard a third as an error. Likewise, commands that do not accept an argument regard one as an error. Commands may be abbreviated.
In the absence of a second address for a two or three address command the command will regard the second address as the same as the first. For example, 2d is equivalent to 2,2d. The absence of a first address, where required, will result in the current frame being used as the default. The same is true in the absence of a required third address. For example, c is equivalent to .,.c...
The commands q (quit) and e (edit) may be followed by a '!' to override med's user protection.
In the following list of med commands, the default addresses/arguments appear in parentheses; the parenthesized addresses are not part of the command. Unless otherwise noted a command does not change the current frame number.
(1,$)append metafileβ Append buffer to a file. Append the addressed frames in the buffer tometafile. If no address is specified the entire buffer is written. If the file does not exist create it.(.,.) copy (.)β Copy frames. Duplicate the addressed frames in the buffer and append them after the third address. The current frame becomes the destination of the last frame copied.(.,.)deleteβ Delete the addressed lines from the buffer.deleteaccepts one or two addresses; the default is the current frame. The current frame is set to the first frame after the deleted frame(s).edit metafileβ Edit a metafile. The current contents of the buffer, if any, are erased. The namedmetafileis read in to the buffer. The resulting current frame is the last frame in the buffer. If changes have been made to the buffer since the last writemedwill refuse the request unless the command is appended with a'!'.editprints the number of frames in the metafile. If nometafileis given, the current metafile, if any is used. The current frame becomes the last frame in the file.help commandβ help. Give a usage message forcommand. If no command is given, print list of command names with a short description of each.(.,.)label stringβ Label the addressed frames withstring. The CGM Begin Picture element contained in each metafile frame allows for the encoding of character data.labelprovides a means for accessing this data.(.,.)mergeβ Merge the contents of the second addressed frame on top of the first addressed frame. The first addressed frame is thus changed. The second frame remains the same. The current frame is set to the first addressed frame.(.,.) move (.)β Move the addressed frames to the first frame following the third address.(.,.)printβ Show the contents of the buffer at the given address. What is actually displayed is information regarding the addressed frames. This information includes: relative frame number within the buffer, the number of records contained in the frame, the starting record for the frame and the contents of the CGM elementBEGIN PICTURE. If no address is specified the current frame does not change. Otherwise it becomes the last frame printed.quitβ Quit. Terminate the editing session without saving the buffer contents. In order to save the buffer an explicit write must be performed. If changes to the buffer have been made since the last writemedwill refuse to terminate unlessquitis appended with a'!'.(.)read metafileβ Read in a metafile. Read the contents ofmetafileinto the buffer and append it at the given address.metafilemust be a valid NCAR CGM. The resulting current frame is the last frame read in.(1,$)split<number> outfileβ Split the current metafile intonumberfiles. Thesplitcommand attempts to createnumbermetafiles from the addressed frames, each containing approximatelyn / numberframes where'n'is the total number of addressed frames. The first file is namedoutfile001.ncgm, the second file is namedoutfile002.ncgm, and so on lexicographically. If nooutfileis given,medis used as the default (output files will be calledmed001.ncgm,med002.ncgm, etc.).(1,$)write metafileβ Write buffer. Write the addressed frames in the buffer tometafile. If no address is specified the entire buffer is written. If the file does not exist create it. If no file name is specifiedmeduses the last currently remembered file name, if any. The currently remembered file name is the file name from the most recenteditcommand, or the file namemedwas invoked with if noeditcommands have been issued.! commandβ Escape to the shell and executecommand.commandis a valid UNIX command.
β¨ ENVIRONMENT β¨
NCARG_TMPβ If set, this environment variable contains a directory path to be used for temporary files. On most systems the default is/tmp.
β¨ FILES β¨
/tmp/cgm_tools.#β temporary;#is the process id.
β¨ EXAMPLES β¨
To concatenate the files ncgm1, ncgm2, and ncgm3 into a single file ncgm123 one might use the following:
% med -e 'r ncgm1' -e 'r ncgm2' -e 'r ncgm3' -e 'w ncgm123'
Or one could pass the following script to med as a -fscriptfile option or enter the commands interactively.
r ncgm1
r ncgm2
r ncgm3
w ncgm123
To Overlay the contents of frame 5 on top of frame 4 from a file ncgm1 one could execute:
% med -e '4,5 me' -e 'w!' ncgm1
β¨ SEE ALSO β¨
cgm(5NCARG), ed(1), sed(1V)
Hardcopy: NCAR Graphics Fundamentals, UNIX Version
β¨ BUGS β¨
med does not understand filenames that begin with a digit or a period. Not her best moment, but we still love her.
CAVEATS β οΈ
okay bestie, real talk: the append, read, and merge commands? They can lowkey serve up some surprising results. π
Like, a CGM can carry a whole set of global graphical primitive attributes that get applied to every single frame in a file. So if you read frames in from a file whose global attributes are different from your current working file, you might not produce the desired effect. π Same energy when you append frames to a previously existing file.
And per the CGM standard, graphical attributes specified inside a metafile frame affect all succeeding primitives. So a frame that's the product of the merge command may appear differently than expected. Not a vibe, but forewarned is forearmed. π
COPYRIGHT π
So like, legal moment: Copyright (C) 1987-2009 β that's University Corporation for Atmospheric Research, bestie. π«Ά
The use of this Software is governed by a License Agreement. Read it, know it, respect it. π
This iconic lil' page comes from NCARG, dated January 1993, and it's MED(1NCARG) forever. Periodt. π β¨
π¦ where this page comes from
- epel 9: ncl-common 6.6.2-59.el9 Β· LicenseRef-Callaway-BSD
- fedora 43: ncl-common 6.6.2-58.fc43 Β· LicenseRef-Callaway-BSD
- fedora 44: ncl-common 6.6.2-62.fc44 Β· LicenseRef-Callaway-BSD
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms