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

Ber*_*own 94 grep sed

使用sed,打印前n个字符的单个衬垫是什么.我正在做以下事情.

grep -G 'defn -test.*' OctaneFullTest.clj  | sed ....
Run Code Online (Sandbox Code Playgroud)

Pau*_*lin 190

不要使用sed,使用切割.

grep .... | cut -c 1-N
Run Code Online (Sandbox Code Playgroud)

如果你必须使用sed:

grep ... | sed -e 's/^\(.\{12\}\).*/\1/'
Run Code Online (Sandbox Code Playgroud)

  • 实际上,在我现在正在处理的 Cygwin 系统上,`cut` 不会切割它,而 `sed` 会。 (2认同)
  • 仅供参考:`cut -c 1-N`(其中 N 是一个数字)_does_ 在我的 Cygwin 安装(cygwin v. 2.6,cut v. 8.25)上工作)在 OS X 上,使用 `sed -E` 而不是 `sed -r `,在别处使用。 (2认同)

小智 43

colrm x
Run Code Online (Sandbox Code Playgroud)

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

cat file |colrm 101 
Run Code Online (Sandbox Code Playgroud)

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


gho*_*g74 7

也不必使用grep

一个例子:

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


SLe*_*ort 6

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

$ sed 's/.//5g' <<< "defn-test"
defn
Run Code Online (Sandbox Code Playgroud)


Die*_*lla 5

严格使用sed:

grep ... | sed -e 's/^\(.\{N\}\).*$/\1/'
Run Code Online (Sandbox Code Playgroud)


Ser*_*yan 5

怎么样

echo alonglineoftext | head -c 9
Run Code Online (Sandbox Code Playgroud)