OnWorks favicon

fcomp - Online in the Cloud

Run fcomp in OnWorks free hosting provider over Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator

This is the command fcomp that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator



fcomp - file compare


fcomp [ option... ] filename1 filename2

fcomp -Help

fcomp -VERSion


The fcomp program is used to compare text files, similar to the diff(1) program. Its
advantage is that it always produces minimal differences, and so will never mis‐sync when
comparing files. Its disadvantage is that it runs slower due to the extra work required
to produce optimal differences. However, for files differing by less than a few thousand
lines, its performance is adequate. The algorithms used by this utility are also used by
the fhist(1) program in order to produce the edit history.

To compare file old to file new, the command:
fcomp old new
would be used. This gives the differences involved in converting from file old to file
new. This is analogous to the use of the cp(1) command. Either the old or new file may
be a directory, in which case the comparison is done to the file in the directory with the
same name as the other file. An error is given if old and new are both directories.


The following options are understood:

-BINary This option may be used to compare binary files on a byte‐for‐byte basis. (Each
byte is treated as a “line” by the algorithm.) Byte values are displayed in
hexadecimal, as are the addresses. Note: this is different behaviour to the
fhist(1) option of the same name.

This option may be used to avoid comparing binary files. A warnign will be
prointed on the standard error, but the program will report success without
printing andy other output.

Ignore blank lines in the input files.

-Context number
This specifies the number of lines of "context" which is displayed. This shows
the specified number of lines before and after the actual lines being changed.
This is useful to locate and identify the line which is actually being changed,
when there are many identical copies of the line in the file.

Output an edit script which is machine readable.

-Failures number
This stops the comparison if the number of changes exceeds the specified number.
Each change is a delete or insert of a single line. This is useful when you are
not interested in the results when the files are totally different. Another use
is a quick check to see if two files are identical, by using a value of zero.

Give some help on how to use the fcomp program.

-Join number
This merges together lines which have changed, if they are separated by up to the
specified number of unchanged lines. This makes a change look bigger, but reduces
the "choppiness" of the output by showing fewer regions being changed. This is
particularly effective to suppress worthless matchings of single blank lines or
comment beginning and ending lines. A useful value for this option is 3 or so.

Output matching lines, rather then changed lines.

This outputs the line numbers at the left edge of the output. This isn't normally
needed, since the line numbers are displayed in the comment line preceding the
lines being displayed. Not outputting the line numbers prevents the terminal from
needlessly scrolling for long lines.

-Output filename
Send the output to this file, rather than the standard output.

Output only a quick summary of changes needed.

This option ignores differences in the number of spaces in the two lines. That
is, two or more adjacent spaces are handled as a single space. Spaces at the
beginning or end of a line are totally ignored.

Uppercase lines before comparing.

Show what version of fcomp is running.

This outputs all of both files together, showing what happened to each line of the
first file in order to change to the line in the second file. This output is in
"change bar" format, where inserted lines begin with |+, deleted lines begin with
|−, and unchanged lines begin with spaces. The presence of the vertical bar makes
it easy to search for the changed lines.

All options may be abbreviated; the abbreviation is documented as the upper case letters,
all lower case letters and underscores (_) are optional. You must use consecutive
sequences of optional letters.

All options are case insensitive, you may type them in upper case or lower case or a
combination of both, case is not important.

For example: the arguments "-help, "-HELP" and "-h" are all interpreted to mean the -Help
option. The argument "-hlp" will not be understood, because consecutive optional
characters were not supplied.

Options and other command line arguments may be mixed arbitrarily on the command line.

The GNU long option names are understood. Since all option names for fcomp are long, this
means ignoring the extra leading '-'. The "-option=value" convention is also understood.


As a convenience, if a pathname begins with a period and a environment variable exists
with that name, then the value of the environment variable will be used as the actual
pathname. For example, if a environment variable of .FOO has the value
this.is.a.long.name, then the command
fcomp -o .FOO
is actually equivilant to the command
fcomp -o this.is.a.long.name
If you want to prevent the expansion of a pathname which begins with a period, then you
can use an alternate form for the pathname, as in:
fcomp -o ./.FOO


In general, fcomp can handle all text files you throw at it, even international text with
unusual encodings. However, fcomp is unable to cope elegantly with files which contain
the NUL character.

The fcomp(1) program simply prints a warning, and continues, you need to know that it
converts NUL characters into an 0x80 value before performing the comparison.

The fmerge(1) program also converts the NUL character to an 0x80 value before merging,
after a warning, and any output file will contain this value, rather than the original NUL

The fhist(1) program, however, generates a fatal error if any input file contains NUL
characters. This is intended to protect your source files for unintentional corruption.
Use -BINary for files which absolutely must contain NUL characters.


The fcomp program will exit with a status of 1 on any error. The fcomp program will only
exit with a status of 0 if there are no errors.


This program is based on the algorithm in
An O(ND) Difference Algorithm and Its Variations, Eugene W. Myers, TR 85‐6,
10‐April‐1985, Department of Computer Science, The University of Arizona, Tuscon,
Arizona 85721.
See also:
A File Comparison Program, Webb Miller and Eugene W. Myers, Software Practice and
Experience, Volume 15, No. 11, November 1985.


fcomp version 1.18.D001
Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
2003, 2004, 2005, 2006, 2008, 2009 Peter Miller;

This program is derived from a work
Copyright (C) 1990 David I. Bell.

This program is free software; you can redistribute it and/or modify it under the terms of
the GNU General Public License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program.
If not, see <http://www.gnu.org/licenses/>.


Peter Miller Web: http://miller.emu.id.au/pmiller/
/\/\* E‐Mail: [email protected]

David I. Bell Web: http://www.canb.auug.org.au/~dbell
E‐Mail: [email protected]

Use fcomp online using onworks.net services

Free Servers & Workstations

Download Windows & Linux apps

  • 1
    Asuswrt-Merlin is a third party
    firmware for select Asus wireless
    routers. Based on the Asuswrt firmware
    developed by Asus, it brings tweaks, new
    features and ...
    Download Asuswrt-Merlin
  • 2
    Atom is a text editor that's
    modern, approachable and full-featured.
    It's also easily customizable- you
    can customize it to do anything and be
    able to ...
    Download Atom
  • 3
    Osu! is a simple rhythm game with a well
    thought out learning curve for players
    of all skill levels. One of the great
    aspects of Osu! is that it is
    Download Osu!
  • 4
    LIBPNG: PNG reference library
    LIBPNG: PNG reference library
    Reference library for supporting the
    Portable Network Graphics (PNG) format.
    Audience: Developers. Programming
    Language: C. This is an application that
    can also...
    Download LIBPNG: PNG reference library
  • 5
    Metal detector based on  RP2040
    Metal detector based on RP2040
    Based on Raspberry Pi Pico board, this
    metal detector is included in pulse
    induction metal detectors category, with
    well known advantages and disadvantages.
    Download Metal detector based on RP2040
  • 6
    PAC Manager
    PAC Manager
    PAC is a Perl/GTK replacement for
    SecureCRT/Putty/etc (linux
    ssh/telnet/... gui)... It provides a GUI
    to configure connections: users,
    passwords, EXPECT regula...
    Download PAC Manager
  • More »

Linux commands

  • 1
    4ti2 - software package for algebraic,
    geometric and combinatorial problems on
    linear spaces ...
    Run 4ti2-output
  • 2
    4ti2 - software package for algebraic,
    geometric and combinatorial problems on
    linear spaces ...
    Run 4ti2-ppi
  • 3
    sim4dbutils - utilities to work with
    sim4db-generated alignment files
    convertPolishes - convert between sim4db
    and GFF3 formats filterPolishes - filter
    Run convertToAtac
  • 4
    sim4dbutils - utilities to work with
    sim4db-generated alignment files
    convertPolishes - convert between sim4db
    and GFF3 formats filterPolishes - filter
    Run convertToExtent
  • 5
    freewheeling � live looping musical
    instrument ...
    Run fweelin
  • 6
    fwexec - program to upload and rexecute
    image file to a connected NXT device ...
    Run fwexec
  • More »