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 ....

Antworten:


208

Nicht benutzen sed, benutzen cut:

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

Wenn Sie verwenden müssen sed:

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

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.


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


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.