2011-02-10 16 views
53

¿Cómo puedo cortar las primeras n y las últimas n columnas de un archivo delimitado por tabulaciones?Cómo cortar la primera y la última n columnas?

Intenté esto para cortar primero n columna. Pero no tengo ni idea de combinar la primera y la última columna n

cut -f 1-10 -d "<CTR>v <TAB>" filename 

Respuesta

78

Cut puede tomar varios rangos en -f:

Columnas hasta 4 y de 7 en adelante:

corte -f -4,7-

o para los campos de 1,2,5,6 y de 10 en adelante:

corte -f 1,2,5, 6,10-

etc

+7

It wor ks mucho mejor con un delimitador ....... cut -d '' -f -2 <<< 'This is a test' – Yogamurthy

-1

puede usar awk, por ejemplo, corte 1, 2 y 3 últimas columnas

awk '{for(i=3;i<=NF-3;i++} print $i}' file 

si tiene un lenguaje de programación tales como Ruby (1.9+)

$ ruby -F"\t" -ane 'print $F[2..-3].join("\t")' file 
2

usar awk para cortar la primera y última campos:

awk '{$1 = ""; $NF = ""; print}' inputfile 

Por desgracia, que deja a los separadores de campo, por lo

aaa bbb ccc 

convierte

[space]bbb[space] 

Para hacer esto utilizando la respuesta de Kurumi que no dejará espacios adicionales, pero de una manera que es específico para sus requisitos:

awk '{delim = ""; for (i=2;i<=NF-1;i++) {printf delim "%s", $i; delim = OFS}; printf "\n"}' inputfile 

Esto también soluciona un par de problemas en esa respuesta.

Para generalizar que:

awk -v skipstart=1 -v skipend=1 '{delim = ""; for (i=skipstart+1;i<=NF-skipend;i++) {printf delim "%s", $i; delim = OFS}; printf "\n"}' inputfile 

A continuación, puede cambiar el número de campos para saltar al principio o al final cambiando las asignaciones de variables en el principio del comando.

-1

Pruebe lo siguiente:

echo a#b#c | awk -F"#" '{$1 = ""; $NF = ""; print}' OFS="" 
0

Usted puede utilizar Bash para que:

while read -a cols; do echo ${cols[@]:0:1} ${cols[@]:1,-1}; done < file.txt 
0

se puede cortar usando siguiente,
-d: delimitador, -f para los campos
\ t utilizado para tabular campos separados

cut -d$'\t' -f 1-3,7- 
Cuestiones relacionadas