Як користуватися sed, як ви друкуєте перші "N" символи рядка?


110

Використовуючи, sedщо є одним вкладишем, для друку перших n символів ? Я роблю наступне:

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 'ТАК перестаньте шкодити'

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

Точно він недоступний на OSX.
fedorqui 'ТАК перестаньте шкодити'

1
FYI: cut -c 1-N(де N являє собою число) робить роботу по моїй установці Cygwin (Cygwin v 2.6, зрізані про 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

9

також не потрібно використовувати grep

приклад:

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


4

Щоб надрукувати N перших символів, ви можете видалити N + 1 символів до кінця рядка:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.