Usando sed, come si stampano i primi caratteri 'N' di una riga?


110

Che sedcos'è una riga per stampare i primi n caratteri ? Sto facendo quanto segue:

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

Risposte:


209

Non usare sed, usa cut:

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

Se DEVI usare sed:

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

2
In realtà su un sistema Cygwin su cui sto lavorando ora cutnon lo taglia mentre lo sedfa.
kqw

O anche sed -r 's/^(.{12}).*/\1/'.
fedorqui 'SO stop harming'

1
@fedorqui -rè apparentemente disponibile su Linux, ma non su Mac.
Paul Tomblin

Esatto, non è disponibile su OSX.
fedorqui 'SO smettila di nuocere'

1
FYI: cut -c 1-N(dove N è un numero) fa lavoro sulla mia installazione Cygwin (Cygwin v 2.6, taglio v 8,25..) Su OS X, utilizzare sed -Epiuttosto che sed -r, utilizzato altrove.
Wrlee

45
colrm x

Ad esempio, se hai bisogno dei primi 100 caratteri:

cat file |colrm 101 

È in circolazione da anni ed è nella maggior parte di Linux e bsd (di sicuro freebsd), di solito per impostazione predefinita. Non ricordo di aver mai dovuto digitare apt-get install colrm.


Questo non fornisce i primi 50 n caratteri. Fornisce gli n caratteri per ogni riga di testo
bsmoo

E colrmcapisce utf8.
Skippy le Grand Gourou

9

non devi nemmeno usare grep

un esempio:

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


4

Per stampare i primi N caratteri è possibile rimuovere i caratteri N + 1 fino alla fine della riga:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.