# Sort

## Description

This operation arranges the elements of an input (e.g., words, numbers, or lines) in a specific order. It is useful for organizing data, analyzing patterns, or preparing datasets for further processing.

***

## Data types

These are the input/output expected data types for this operation:

### Input data

![](https://965373739-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkxZeV4nlXcIAjMGZxzLI%2Fuploads%2FExtApHuiMxiHgaNWDLb2%2Fimage.png?alt=media\&token=5f4e1372-a2db-4d7e-b81b-976507cac896) - Input strings to be sorted.

### Output data

![](https://965373739-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkxZeV4nlXcIAjMGZxzLI%2Fuploads%2FyeZGvHDhYqskHKW5bdnp%2Fimage.png?alt=media\&token=d72665aa-3d46-4572-a463-a62344ee7f88) - Sorted data.

***

## Parameters

These are the parameters you need to configure to use this operation (mandatory parameters are marked with a <mark style="color:red;">**\***</mark>):

<details>

<summary>Delimiter<mark style="color:red;"><strong>*</strong></mark></summary>

Choose the delimiter that separates each segment in your input data. Choose one of the following:

* **Line feed** - Select this to have each line of text as a separate value.
* **Space** - Your segments are separated by spaces.
* **Comma** - Your segments are separated by commas (`,`)
* **Semi-colon** - Your segments are separated by semi-colons (`;`)
* **Colon** - Your segments are separated by colons (`:`)
* **CRLF** - Carriage return line feed (CRLF) is a control character that originally referred to moving the carriage on typewriters back to the starting position. In computing, it’s used in classic Mac OS and some Windows-based systems to mark the end of a line. If your input uses `\r` as the line-ending character, you can set the delimiter to `\r` to correctly separate values. For example: `100\r200\r300`

</details>

<details>

<summary>Order<mark style="color:red;"><strong>*</strong></mark></summary>

Choose the type of sorting to be applied. Choose one of the following:

* **Alphabetical (case sensitive)** - Rearranges the elements in alphabetical order, considering case.
* **Alphabetical (case insensitive)** - Rearranges the elements in alphabetical order, ignoring case.
* **IP address** - Sorts a list of IP addresses in numerical order, rather than treating them as strings.
* **Numeric** - Sorts values as numbers rather than strings. This ensures proper numerical order, where `2` comes before `10`, unlike a lexicographic sort which might order them as `10, 2`.
* **Numeric (hexadecimal)** - Sorts hexadecimal numbers as their numeric equivalents, not as strings. For example, `0x1A` (26 in decimal) will come before `0xF` (15 in decimal), regardless of their string order.

</details>

<details>

<summary>Reverse</summary>

Set this parameter to **true** if you want to reverse the order of the sorted elements.

</details>

***

## Example

Suppose you want to **sort** the terms of a series of strings in your input data:

1. In your Pipeline, open the required [Action](https://docs.onum.com/the-workspace/pipelines/actions) configuration and select the input **Field**.
2. In the **Operation** field, choose **Sort**.
3. Set **Delimiter** to `Comma`.
4. Set **Order** to `Alphabetical (case sensitive)`.
5. Set **Reverse** to **false**.
6. Give your **Output field** a name and click **Save**. The terms in your input field will be sorted following the specified conditions.&#x20;

For example, this text:

```
banana,apple,orange,grape
```

will be sorted as:

```
apple,banana,grape,orange
```

{% hint style="info" %}
You can try out operations with specific values using the **Input** field above the operation. You can enter the value in the example above and check the result in the **Output** field.
{% endhint %}
