ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

P
Paulo Mattos

不要使用 sed,使用 cut

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

如果您必须使用 sed

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

实际上,在我现在正在研究的 Cygwin 系统上,cut 并没有削减它,而 sed 可以。
甚至sed -r 's/^(.{12}).*/\1/'
@fedorqui -r 显然在 Linux 上可用,但在 Mac 上不可用。
确切地说,它在 OSX 上不可用。
仅供参考:cut -c 1-N(其中 N 是一个数字)确实适用于我的 Cygwin 安装(cygwin v. 2.6,cut v. 8.25)在 OS X 上,使用 sed -E 而不是 sed -r,在别处使用。
r
rjmunro
colrm x

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

cat file |colrm 101 

它已经存在多年并且在大多数 linux 和 bsd(肯定是 freebsd)中,通常是默认的。我不记得曾经输入过 apt-get install colrm


这不会给出前 50n 个字符。它为每一行文本提供 n 个字符
colrm 理解 utf8。
g
ghostdog74

也不必使用 grep

一个例子:

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

D
Diego Sevilla

严格使用 sed:

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

S
SLePort

要打印前 N 个字符,您可以删除直到行尾的 N+1 个字符:

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

S
Sergey Papyan

头呢?

echo alonglineoftext | head -c 9

我想知道如何/如果这适用于非 ASCII/多字节字符