En utilisant sed, comment imprimer les premiers «N» caractères d'une ligne?


110

Comment utiliser sedune seule ligne pour imprimer les n premiers caractères ? Je fais ce qui suit:

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

Réponses:


209

N'utilisez pas sed, utilisez cut:

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

Si vous DEVEZ utiliser sed:

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

2
En fait, sur un système Cygwin sur lequel je travaille maintenant, cutcela ne le coupe pas sed.
kqw

Ou même sed -r 's/^(.{12}).*/\1/'.
fedorqui 'SO arrêtez de nuire'

1
@fedorqui -rest apparemment disponible sur Linux, mais pas sur Mac.
Paul Tomblin

Exactement, il n'est pas disponible sur OSX.
fedorqui 'SO arrêtez de nuire'

1
Pour votre information: cut -c 1-N(où N est un nombre) fait le travail sur mon installation Cygwin (Cygwin v 2.6, coupe v 8.25.). Sur OS X, utilisez sed -Eplutôt que sed -r, utilisé ailleurs.
wrlee

45
colrm x

Par exemple, si vous avez besoin des 100 premiers caractères:

cat file |colrm 101 

Il existe depuis des années et se trouve dans la plupart des Linux et BSD (freebsd bien sûr), généralement par défaut. Je ne me souviens pas avoir jamais eu à taper apt-get install colrm.


Cela ne donne pas les 50 premiers caractères. Il donne les n caractères pour chaque ligne de texte
bsmoo

Et colrmcomprend utf8.
Skippy le Grand Gourou

9

pas besoin d'utiliser grep non plus

un exemple:

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


4

Pour imprimer les N premiers caractères, vous pouvez supprimer les N + 1 caractères jusqu'à la fin de la ligne:

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.