pencarian teks yang tidak tepat


10

Apakah ada utilitas seperti grepatau bahkan uniqtetapi untuk pencarian tidak tepat, atau saya harus menulisnya sendiri?

Maksud saya itu akan melihat 90% (jumlah mungkin berbeda) cocok, atau sesuatu seperti itu. Misalnya saya punya file dengan beberapa string:

abc123
abd123
abc223
qwe938

Dalam hal ini utilitas tersebut harus mengembalikan tiga string pertama atau mengatakan mereka serupa. Tentu saja saya tidak tahu pola konten file seperti dalam kasus dengan grepatau uniq.


Ini adalah kumpulan data yang sangat spesifik. Misalnya, apakah Mary seperti Marie, atau apakah ABC seperti BCD? Bisakah Anda memberikan contoh dunia nyata dari data Anda?
EightBitTony

Jawaban:


19

agrep atau tre-grep akan melakukan apa yang Anda minta; mereka "cocok" dengan pencocokan / grep regex. Untuk informasi lebih lanjut, lihat juga artikel Wikipedia .

% tre-agrep --help | head             (05-23 16:53)
Usage: tre-agrep [OPTION]... PATTERN [FILE]...
Searches for approximate matches of PATTERN in each FILE or standard input.
Example: `tre-agrep -2 optimize foo.txt' outputs all lines in file `foo.txt'     that
match "optimize" within two errors.  E.g. lines which contain "optimise",
"optmise", and "opitmize" all match.

Regexp selection and interpretation:
  -e, --regexp=PATTERN      use PATTERN as a regular expression
  -i, --ignore-case         ignore case distinctions
  -k, --literal             PATTERN is a literal string


% agrep  | head                       (05-23 16:53)
usage: agrep [-@#abcdehiklnoprstvwxyBDGIMSV] [-f patternfile] [-H dir] pattern [files]

summary of frequently used options:
(For a more detailed listing see 'man agrep'.)
-#: find matches with at most # errors
-c: output the number of matched records
-d: define record delimiter
-h: do not output file names
-i: case-insensitive search, e.g., 'a' = 'A'
-l: output the names of files that contain a match
-n: output record prefixed by record number
-v: output those records that have no matches
-w: pattern has to match as a word, e.g., 'win' will not match 'wind'
-B: best match mode. find the closest matches to the pattern
-G: output the files that contain a match
-H 'dir': the cast-dictionary is located in directory 'dir'

Persis itulah yang saya cari. Terima kasih.
buru
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.