Sed kullanarak, bir satırın ilk 'N' karakterini nasıl yazdırırsınız?


110

Kullanılması sedilk yazdırmak için bir tek astar nedir n karakterleri ? Ben aşağıdakileri yapıyorum:

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

Yanıtlar:


209

Kullanmayın sed, kullanın cut:

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

ŞUNLARI KULLANMALISINIZ sed:

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

2
Aslında şu anda üzerinde çalıştığım bir Cygwin sisteminde cut, kesmiyor sed.
kqw

Veya hatta sed -r 's/^(.{12}).*/\1/'.
fedorqui

1
@fedorqui -r, görünüşe göre Linux'ta mevcut, ancak Mac'te değil.
Paul Tomblin

Kesinlikle, OSX'te mevcut değildir.
fedorqui 'SO zarar vermeyi bırak'

1
Bilginize: cut -c 1-N(N bir sayıdır) yapar , kullanmak OS X'te (v 2,6, kesim v 8.25 cygwin..) Benim Cygwin yüklemesinde işi sed -Eyerine sed -rbaşka bir yerde kullanılan,.
wrlee

45
colrm x

Örneğin, ilk 100 karaktere ihtiyacınız varsa:

cat file |colrm 101 

Yıllardır ortalıktaydı ve çoğu linux ve bsd'de (elbette freebsd), genellikle varsayılan olarak. Yazmak zorunda olduğumu hiç hatırlamıyorum apt-get install colrm.


Bu ilk 50n karakteri vermez. Her metin satırı için n karakteri verir
bsmoo

Ve colrmutf8'i anlar.
Skippy le Grand Gourou

9

grep kullanmak zorunda değilsiniz

Bir örnek:

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


4

İlk N karakterini yazdırmak için N + 1 karakterini satırın sonuna kadar kaldırabilirsiniz:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.