{"id":22979685,"url":"https://github.com/verticalsoftware/vertical-scanner","last_synced_at":"2026-07-01T15:31:36.161Z","repository":{"id":191155035,"uuid":"610872342","full_name":"verticalsoftware/vertical-scanner","owner":"verticalsoftware","description":".Net CLI tool that emulates grep","archived":false,"fork":false,"pushed_at":"2023-03-07T17:00:04.000Z","size":31,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-11-07T11:29:37.667Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/verticalsoftware.png","metadata":{"files":{"readme":"README.txt","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-03-07T16:45:19.000Z","updated_at":"2023-03-07T16:47:27.000Z","dependencies_parsed_at":"2023-08-28T12:23:19.294Z","dependency_job_id":null,"html_url":"https://github.com/verticalsoftware/vertical-scanner","commit_stats":null,"previous_names":["verticalsoftware/vertical-scanner"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/verticalsoftware/vertical-scanner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verticalsoftware%2Fvertical-scanner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verticalsoftware%2Fvertical-scanner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verticalsoftware%2Fvertical-scanner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verticalsoftware%2Fvertical-scanner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/verticalsoftware","download_url":"https://codeload.github.com/verticalsoftware/vertical-scanner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verticalsoftware%2Fvertical-scanner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35013179,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-01T02:00:05.325Z","response_time":130,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-15T01:33:25.271Z","updated_at":"2026-07-01T15:31:36.136Z","avatar_url":"https://github.com/verticalsoftware.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿Vertical Scanner - a cross-platform 'grep' like utility.\n\nUSAGE    \n    scan [OPTIONS] \u003cPATTERNS\u003e [FILE...]\n    \nDESCRIPTION\n    You'll find that this utility attempts to get as close to grep as possible.\n    \nQUICK REFERENCE\n    Simple search of file:              scan findme ./text.txt\n    Directory search:                   scan findme ./**/*\n    Directory search of txt files:      scan findme ./**/*.txt\n    \nARGUMENTS\n    \u003cPATTERNS\u003e\n        One or more search patterns to match within lines of source input, each separated by an escaped pipe character. If the search includes spaces, enclose the search patterns in double quotes. To specify multiple search patterns as separate arguments, use the -e or --regexp option. If -e or --regexp option is used, the scanner will treat all positional parameters as file path inputs.\n        \n    [FILE...]\n        One or more paths to files or glob patterns to match multiple files. Multiple globs can be represented in a single argument by separating entries by a pipe character.\n\nGENERIC OPTIONS\n    --help\n        Print this document\n        \n    --log-level \u003ctrace|debug|information|warning|error|critical|none\u003e\n        Configures the internal logger, defaults to error (overriden to none when using -s or --no-messages)\n\n    -V, --version\n        Print the utility version\n\nPATTERN OPTIONS\n    -F, --fixed-strings\n        Do not treat PATTERNS as a regular expression. Specifying this option causes all regular expression related options (-w, --word-regexp, -x, --line-regexp) to have no effect.\n        \n    -G, --basic-regexp\n        Treats PATTERNS as regular expressions as implemented by the .Net regular expression engine. This is the default.\n        \nFILE OPTIONS\n    -X \u003cglob\u003e\n        Exclude \u003cglob\u003e from any file pattern matches. This option may be repeated multiple times or concatenated in a single value by separating entries with the pipe character.                 \n\nMATCH OPTIONS\n    -e \u003cPATTERNS\u003e, --regexp \u003cPATTERNS\u003e\n        Uses PATTERNS as the patterns matched to input sources. Use this option if the search pattern begins with \"-\". This option can be used multiple times, and is the recommended way to specify multiple patterns.\n        Note - if this option is used, then the scanner treats all position-based arguments as FILE parameters.  \n        \n    -f \u003cPATH\u003e, --file \u003cPATH\u003e\n        Use patterns defined in a file, one per line. This option can be used multiple times.\n\n    -i, --ignore-case\n        Ignores case when matching input patterns to match patterns. Modifies the regular expression options or uses .Net case-insensitive string comparers.\n        \n    --no-ignore-case\n        Evaluates case when matching input patterns to match patterns. This is the default.\n        \n    -v, --invert-match\n        Selects lines from input sources that do not match PATTERNS.\n        \n    -w, --word-regexp\n        Modifies the search pattern such that the resulting regular expression selects lines containing matches to a whole word to the beginning or end of the scan line, or preceded or followed by a non-word constituent character.\n        \n    -x, --line-regexp\n        Modifies the search pattern such that the resulting regular expression matches the entire scan line.\n        \nOUTPUT OPTIONS\n    -b, --byte-offset\n        Print the byte offset of the input file before each output line.\n        \n    -c, --count\n        Replace normal output with the number of matched files.\n        \n    --color [ALWAYS|NEVER|AUTO]\n        Print matches such that ansi control characters are included that can colorize matched sections of the input line. Colors used can be defined in a palette file. This option is set by default to 'AUTO'.          \n\n    -L, --files-without-match                                     \n        Replace normal output with the paths of files that would have not produced output.\n        \n    -l, --files-with-matches\n        Replace normal output with the paths of files that would have produced output.\n        \n    --line-numbers\n        Print the line number before each output line. This option has no effect when other options that suppress normal output are used.        \n        \n    -m \u003cCOUNT\u003e, --max \u003cCOUNT\u003e\n        Indicates reading of file should stop after \u003ccount\u003e matching lines are encountered. If \u003ccount\u003e is zero, the file is not read. -1 is considered infinity.\n        \n    --no-paths\n        Do not print file paths.        \n        \n    -o, --only-matching\n        Print only matched, non-empty parts of a matching line. This option is ignored when using surrounding regions (-S, --surround).\n\n    -q, --quiet, --silent\n        Do not print any results and exit with a zero return code if any match is found.\n        \n    --palette \u003cPATH\u003e\n        Path to a palette file. By default the scanner will look in $USERPROFILE/.vertical-scanner/palette.txt.\n        \n    -P, --print-all\n        Prints all lines of input sources regardless of whether or not matches are made.    \n        \n    -s, --no-messages\n        Ignore error messages relating to I/O operations.\n        \n    -S, --surround \u003c[SPEC]\u003e\n        Surround matching input lines with non-matching input lines that occur before and/or after the matched line. -o has no effect on printing non-matching lines. This option is not available when using other options that modify normal output: -C, --count, -l, --files-with-matches, -q, --quiet, --silent.\n        Examples:\n            scan --surround=-5      Prints up to 5 lines that are scanned before the matched line\n            scan --surround=+5      Prints up to 5 lines that are scanned after the matched line\n            scan --surround=5       Prints up to 5 lines that are scanned before and after the matched line\n            \nCONFIGURATION OPTIONS\n    --get-templates\n        Gets the configured render templates.\n    \n    --set-template [ID=TEMPLATE]\n        Modifies the user's local palette file by adding or updating a key/value pair.\n        ID\n            The ID of the template to update. Can be one of the following:\n                MatchingSubstrings\u003cN\u003e\n                NonMatchingSubstrings\n                ByteOffsets\n                LineNumbers\n                FileInfo\n            \n            \u003cN\u003e of MatchingSubstrings is a zero-based index. The scanner can colorize distinct values using different colors. The templates defined here will form a pool of templates that scanner will pick from in order. There cannot be any gaps in the indices of the keys for this template type.\n            \n        TEMPLATE\n            The template used to render the value. Use SpectreConsole markup along with a single parameter placeholder to specify a template.\n            \n        Examples:\n            scan --set-palette-color MatchingSubstrings0=[green]{0}[/]  - Renders the first distinct matched value in green\n            scan --set-palette-color MatchingSubstrings1=[red]{0}[/]  - Renders the second distinct matched value in red...\n            scan --set-palette-color ByteOffsets=[pink italic]{0}[/]    - Renders byte offsets in italicized pink                            \n    \n    --template-out [PATH]\n        Write the modified template file to [PATH]. Used in combination with --set-template.                              ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fverticalsoftware%2Fvertical-scanner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fverticalsoftware%2Fvertical-scanner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fverticalsoftware%2Fvertical-scanner/lists"}