

$ 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

