---
name: "tag"
section: "3tcl"
platform: "linux"
package: "taglog"
version: "0.2.5-1"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/tag/3tcl"
---

# tag(3tcl)

Manipulate tagged files

## NAME

tag - Manipulate tagged files

## SYNOPSIS

**tag** option ?arg arg ...?

## DESCRIPTION

The tag procedure provides a number of options for manipulating tagged files.

## COMMANDS

- tag readfile filename

  Reads the file with the given filename and returns a list where each list element is a tag record, which is represented by a list of label-value pairs, or label-value-endlabel triples.

  The tag header is the first element returned.

- tag writefile filename list

  Takes a list in the format used internally in tcl programs for tagged data and writes it as a tagged file.

- tag extract list tests

  Takes a list in tagged format, and a list of conditions, and returns a new list in tagged format which contains those tag records which match the conditions.

  The tests is a list of test items, each of which is a list of the form { labelname condition matchvalue }

  The conditions are

- *==*

  String equals

- *!=*

  String not equal

- *\<=*

  Less than or equal

- *-in*

  Is the test value a member of the list given as the matchvalue

- *-contains*

  Does the match value contain the test value as a case insensitive substring.

- *-earlier*

  Date earlier

- *-later*

  Date later - dates are in ISO format (yyyy-mm-dd \[hh:mm:ss\]).

- *-exists*

  Does the label exist in this record.

## BUGS

tag readfile reads the whole file into memory before turning it into a list. Should be more memory efficient.

The -earlier and -later comparisons require TCL8.3

## AUTHOR

John Lines (john+taglog@paladyn.org)
