

$ cat columns.test 11111 22222 33333 44444 55555 111 22 33 4444 5555 11111 22222 33333 44444 55555 11 22 3 444 5555La parte mas complicada es preservar el sangrado. El truco reside, en parte, en el patrón central
$ cat columns.sed s/^\( *[0-9][0-9]*\)\( .*[0-9] \)\( *[0-9][0-9]*\)$/\3\2\1/ $ sed -f columns.sed columns.test 55555 22222 33333 44444 11111 5555 22 33 4444 111 55555 22222 33333 44444 11111 5555 22 3 444 11El siguiente ejemplo utiliza una opción del operador de sustitución que permite decidir que aparición del patrón deseamos sustituir. Asi,
s/A/B/3
sustituirá la 3 aparición de A por B, obviando las otras.
El ejemplo selecciona la columna dos del fichero:
$ cat col2.sed
#extracts the second column
s/^ *//
s/\<[0-9][0-9]*\>//1
s/\<[0-9][0-9]*\>//2
s/\<[0-9][0-9]*\>//2
s/\<[0-9][0-9]*\>//2
s/ *$//
$ sed -f col2.sed columns.test
22222
22
22222
22
Mas general que el anterior, el siguiente ejemplo elimina
un número de columnas arbitrario $1 por la izquierda y otro
número $2 por la derecha.
Para lograrlo, es necesario utilizar un un guión para la shell
que llama al correspondiente guión sed. Los parámetros
son introducidos en el guión sed mediante el uso apropiado
de las comillas dobles y simples:
> cat colbranch.sh
#!/bin/bash
sed -e '
s/^\( *[0-9]\+\)\{'"$1"'\}//
s/\( *[0-9]\+\)\{'"$2"'\}$//
'
Veamos un ejemplo de uso:
> cat columns.test
11111 22222 33333 44444 55555
111 22 33 4444 5555
11111 22222 33333 44444 55555
11 22 3 444 5555
> colbranch.sh 2 1 < columns.test
33333 44444
33 4444
33333 44444
3 444

