使用sed,如何打印一行的前N个字符?


110

使用sed什么是一个底纸打印前n个字符?我正在执行以下操作:

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

Answers:


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上不可用。
Paul Tomblin

确实,它在OSX上不可用。
fedorqui'SO stop harm''Mar

1
仅供参考:( cut -c 1-N其中N是数字)可以在我的Cygwin安装正常工作(cygwin v。2.6,cut v。8.25)在OS X上,请在其他地方使用sed -E而不是sed -r
wrlee '17

45
colrm x

例如,如果您需要前100个字符:

cat file |colrm 101 

它已经存在很多年了,并且在大多数linux和bsd(肯定是freebsd)中都存在,通常是默认情况下。我不记得要打字了apt-get install colrm


这不会给出前50n个字符。它为每行文本提供了n个字符
bsmoo15年

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.