Wie drucken Sie mit sed die ersten 'N' Zeichen einer Zeile?

109

Verwenden Sie sedeinen Einzeiler, um die ersten n Zeichen zu drucken ? Ich mache folgendes:

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

Antworten:

208

Nicht benutzen sed, benutzen cut:

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

Wenn Sie verwenden müssen sed:

grep ... | sed -e 's/^\(.\{12\}\).*/\1/'
Paul Tomblin
quelle
2
Auf einem Cygwin-System, an dem ich gerade arbeite, wird cutes nicht geschnitten, solange es sedfunktioniert.
kqw
Oder sogar sed -r 's/^(.{12}).*/\1/'.
Fedorqui 'SO hör auf,'
1
@fedorqui -rist anscheinend unter Linux verfügbar, aber nicht auf Mac.
Paul Tomblin
Genau, es ist unter OSX nicht verfügbar.
Fedorqui 'SO hör auf,'
1
Zu Ihrer Information : cut -c 1-N(wobei N eine Zahl ist) funktioniert bei meiner Cygwin-Installation (cygwin v. 2.6, cut v. 8.25). Verwenden Sie unter OS X sed -Eeher als sed -randerswo verwendet.
Wrlee
45
colrm x

Wenn Sie beispielsweise die ersten 100 Zeichen benötigen:

cat file |colrm 101 

Es gibt es schon seit Jahren und es ist in den meisten Linux- und BSD-Versionen (sicher freebsd) enthalten, normalerweise standardmäßig. Ich kann mich nicht erinnern, jemals tippen zu müssen apt-get install colrm.

manoflinux
quelle
Dies gibt nicht die ersten 50n Zeichen. Es gibt die n Zeichen für jede Textzeile
bsmoo
Und colrmversteht utf8.
Skippy le Grand Gourou
9

muss auch nicht grep verwenden

ein Beispiel:

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

Streng mit sed:

grep ... | sed -e 's/^\(.\{N\}\).*$/\1/'
Diego Sevilla
quelle
4

Um die N ersten Zeichen zu drucken, können Sie die N + 1 Zeichen bis zum Zeilenende entfernen:

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

Wie wäre es mit Kopf ?

echo alonglineoftext | head -c 9
Sergey Papyan
quelle