Usando sed, ¿cómo se imprimen los primeros caracteres 'N' de una línea?


110

Usando sedlo que es un chiste para imprimir los primeros n caracteres ? Estoy haciendo lo siguiente:

grep -G 'defn -test.*' OctaneFullTest.clj  | sed ....

Respuestas:


209

No use sed, use cut:

grep .... | cut -c 1-N

Si DEBE usar sed:

grep ... | sed -e 's/^\(.\{12\}\).*/\1/'

2
En realidad, en un sistema Cygwin en el que estoy trabajando ahora cutno funciona, mientras que sedsí.
kqw

O incluso sed -r 's/^(.{12}).*/\1/'.
fedorqui 'SO deja de dañar'

1
@fedorqui -raparentemente está disponible en Linux, pero no en Mac.
Paul Tomblin

Exactamente, no está disponible en OSX.
fedorqui 'SO deja de dañar'

1
Para su información: cut -c 1-N(donde N es un número) hace el trabajo en mi instalación de Cygwin (Cygwin v 2.6, corte v 8.25..) En OS X, utilice sed -Een lugar de sed -r, utilizado en otros lugares.
wrlee

45
colrm x

Por ejemplo, si necesita los primeros 100 caracteres:

cat file |colrm 101 

Ha existido durante años y está en la mayoría de linux y bsd (freebsd seguro), generalmente por defecto. No recuerdo haber tenido que escribir nunca apt-get install colrm.


Esto no da los primeros 50n caracteres. Da los n caracteres para cada línea de texto
bsmoo

Y colrmentiende utf8.
Skippy le Grand Gourou

9

tampoco tienes que usar grep

un ejemplo:

sed -n '/searchwords/{s/^\(.\{12\}\).*/\1/g;p}' file


4

Para imprimir los N primeros caracteres, puede eliminar los N + 1 caracteres hasta el final de la línea:

$ sed 's/.//5g' <<< "defn-test"
defn

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.