Как с помощью sed напечатать первые N символов строки?


110

Используя sedто , что это один вкладыш для печати первых п символов ? Я делаю следующее:

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

Ответы:


209

Не используйте sed, используйте cut:

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

Если вы ДОЛЖНЫ использовать sed:

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

2
На самом деле система Cygwin, над которой я сейчас работаю cut, не сокращает ее, пока не сокращает sed.
kqw

Или даже sed -r 's/^(.{12}).*/\1/'.
fedorqui `` SO, перестань причинять вред '',

1
@fedorqui -rочевидно доступен в Linux, но не на Mac.
Пол Томблин

Точно, это недоступно в OSX.
fedorqui `` SO stop harming ''

1
К вашему сведению: cut -c 1-N(где N - число) действительно работает с моей установкой Cygwin (cygwin v. 2.6, cut v. 8.25). В OS X используйте, sed -Eа не sed -r, где-то еще.
wrlee

45
colrm x

Например, если вам нужны первые 100 символов:

cat file |colrm 101 

Он существует уже много лет и есть в большинстве Linux и BSD (конечно, во FreeBSD), обычно по умолчанию. Я не помню, чтобы мне когда-нибудь приходилось печатать apt-get install colrm.


Это не дает первых 50n символов. Он дает n символов для каждой строки текста
bsmoo

И colrmпонимает utf8.
Skippy le Grand Gourou,



4

Чтобы напечатать первые N символов, вы можете удалить N + 1 символов до конца строки:

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.