---
name: "fstrcmp"
section: "1"
platform: "linux"
package: "fstrcmp"
version: "0.7.D001-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/fstrcmp"
---

# fstrcmp(1)

fuzzy comparison of strings

## NAME

fstrcmp - fuzzy comparison of strings

## SYNOPSIS

**fstrcmp** \[ **-p** \] *first‐string* *second‐string*

**fstrcmp** **-w** *first‐string* *second‐string*

**fstrcmp** **-a** *first‐file* *second‐file*

**fstrcmp** **-s** *needle* *haystack*...

**fstrcmp** **--version**

## DESCRIPTION

The fstrcmp command is used to make fuzzy comparisons between strings. The “edit distance” between the strings is printed, with 0.0 meaning the strings are utterly un‐alike, and 1.0 meaning the strings are identical.

You may need to quote the string to insulate them from the shell.

## OPTIONS

The fstrcmp command understands the following options:

- **-a**

  - **--files-as-bytes**

  This option is used to compare two files as arrays of bytes. See [*fmemcmp*(3)](/fmemcmp/3.md) for more information.

- **-p**

  - **--pair**

  This option is used to compare two strings as arrays of bytes. This is the default. See [*fstrcmp*(3)](/fstrcmp/3.md) for more information.

- **-s**

  - **--select**

  This option is used to select the closest *needle* from the provided *haystack* alternatives. The most similar (single) choice is printed. If none are particularly similar, nothing is printed. See [*fstrcmp*(3)](/fstrcmp/3.md) for more information. See below for example.

- **-V**

  - **--version**

  This option may be used to print the version of the fstrcmp command, and then exit.

- **-w**

  - **--wide-pair**

  This option is used to compare two multi‐byte character strings. See [*fstrcoll*(3)](/fstrcoll/3.md) for more information.

## EXIT STATUS

The fstrcmp command exits with status 1 on any error. The fstrcmp command only exits with status 0 if there are no errors.

## EXAMPLE

The *fstrcmp --select* option may be used in a shell script to improve error messages.

```
case "$action" in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    stop
    start
    ;;
*)
    echo "$0: action \"$action\" unknown" 1>&2
    guess=`fstrcmp --select "$action" stop start restart`
    if [ "$guess" ]
    then
        echo "$0: did you mean \"$guess\" instead?" 1>&2
    fi
    exit 1
    ;;
esac
```

Thus, the error message frequently suggests the correct action in the face of simple finger problems on the command line.

## SEE ALSO

- [*fstrcmp*(3)](/fstrcmp/3.md)

  fuzzy comparison of strings

- [*fstrcoll*(3)](/fstrcoll/3.md)

  fuzzy comparison of two multi‐byte character strings

- [*fstrcmpi*(3)](/fstrcmpi/3.md)

  fuzzy comparison of strings, integer variation

## COPYRIGHT

fstrcmp version 0.7\
 Copyright (C) 2009 Peter Miller\
 Peter Miller \<pmiller@opensource.org.au\>

The comparison code is derived from the fuzzy comparison functions in GNU Gettext 0.17.  The GNU Gettext comparison functions were, in turn, derived from GNU Diff 2.7.

Copyright (C) 1988-2009 Free Software Foundation
