Jak za pomocą seda wypisuje się pierwsze „N” znaków wiersza?


110

Używając sedjednej linijki do wydrukowania pierwszych n znaków ? Wykonuję następujące czynności:

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

Odpowiedzi:


209

Nie używaj sed, użyj cut:

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

Jeśli MUSISZ użyć sed:

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

2
Właściwie w systemie Cygwin, nad którym teraz pracuję cut, nie działa, podczas gdy sedtak.
kqw

Albo nawet sed -r 's/^(.{12}).*/\1/'.
fedorqui 'SO przestań szkodzić'

1
@fedorqui -rjest najwyraźniej dostępny w systemie Linux, ale nie na Macu.
Paul Tomblin,

Dokładnie, nie jest dostępny na OSX.
fedorqui 'SO przestać krzywdzić'

1
FYI: cut -c 1-N(gdzie N jest liczbą) wykonuje pracę na mojej instalacji Cygwin (Cygwin v 2.6, cięcie v 8.25.). Na OS X, użyj sed -Ezamiast sed -rstosowane gdzie indziej.
wrlee

45
colrm x

Na przykład, jeśli potrzebujesz pierwszych 100 znaków:

cat file |colrm 101 

Istnieje od lat i jest w większości systemów Linux i bsd (na pewno freebsd), zwykle domyślnie. Nie pamiętam, żebym kiedykolwiek musiał pisać apt-get install colrm.


To nie daje pierwszych 50n znaków. Daje n znaków w każdym wierszu tekstu
bsmoo

I colrmrozumie utf8.
Skippy le Grand Gourou

9

nie musisz też używać grep

przykład:

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


4

Aby wydrukować N pierwszych znaków, możesz usunąć N + 1 znaków aż do końca linii:

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.