---
name: "split"
section: "n"
platform: "linux"
package: "tcl"
version: "8.6.16-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/split/n"
---

# split(n)

Split a string into a proper Tcl list

```

```

## NAME

split - Split a string into a proper Tcl list

## SYNOPSIS

**split** *string* ?*splitChars*?

```

```

## DESCRIPTION

Returns a list created by splitting *string* at each character that is in the *splitChars* argument. Each element of the result list will consist of the characters from *string* that lie between instances of the characters in *splitChars*. Empty list elements will be generated if *string* contains adjacent characters in *splitChars*, or if the first or last character of *string* is in *splitChars*. If *splitChars* is an empty string then each character of *string* becomes a separate element of the result list. *SplitChars* defaults to the standard white-space characters.

## EXAMPLES

Divide up a USENET group name into its hierarchical components:

```
split "comp.lang.tcl" .
      → comp lang tcl
```

See how the **split** command splits on *every* character in *splitChars*, which can result in information loss if you are not careful:

```
split "alpha beta gamma" "temp"
      → al {ha b} {} {a ga} {} a
```

Extract the list words from a string that is not a well-formed list:

```
split "Example with {unbalanced brace character"
      → Example with \{unbalanced brace character
```

Split a string into its constituent characters

```
split "Hello world" {}
      → H e l l o { } w o r l d
```

### PARSING RECORD-ORIENTED FILES

Parse a Unix /etc/passwd file, which consists of one entry per line, with each line consisting of a colon-separated list of fields:

```
## Read the file
set fid [open /etc/passwd]
set content [read $fid]
close $fid
## Split into records on newlines
set records [split $content "\n"]
## Iterate over the records
foreach rec $records {
    ## Split into fields on colons
    set fields [split $rec ":"]
    ## Assign fields to variables and print some out...
    lassign $fields \
            userName password uid grp longName homeDir shell
    puts "$longName uses [file tail $shell] for a login shell"
}
```

## SEE ALSO

[join(n)](/join/n.md), [list(n)](/list/n.md), [string(n)](/string/n.md)

## KEYWORDS

list, split, string
