jbsu32 - 1 year ago 55

Bash Question

4 lists are given like this. I need to sort them according to the

`first numerical column`

`tabs`

`\t`

`France \t Paris \t 13.2 \t 14.2`

Germany \t Munich \t Hamburg \t 16.9 \t 16.6

Norway \t 8.9 \t 9.1

Spain \t Barcelona \t Madrid \t Malaga \t 21.2 \t 19.4

After sorting, these columns will look like ->

`Norway \t 8.9 \t 9.1`

France \t Paris \t 13.2 \t 14.2

Germany \t Munich \t Hamburg \t 16.9 \t 16.6

Spain \t Barcelona \t Madrid \t Malaga \t 21.2 \t 19.4

They are sorted according to

`8.9, 13.2, 16.9 & 21.2`

I have tried with something like

`sort -k 2n`

`sort -k 3n`

`8.9, 13.2, 16.9 & 21.2`

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

How about this:

```
sed -e 's/^[^0-9.]*\([0-9.]\+\).*$/\1\t\0/' input | sort -n | cut -f 2-
```

We extract the first numeric field and we insert it to the beginning of each line. Then we sort numerically all lines and then we remove the stuff that we added in the first step.

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**