3

我无法捕捉每行的前 6 个字符。假设我在 text.txt 中有以下几行:

this is a sentence
1234567890
string

我想获得前 10 个字符:

this i
123456
string

我试过跑步grep -Eo "^[a-zA-Z0-9]*{6}" text.txt

但是 grep 在每 6 个位置回收正则表达式,而不是从下一个新行开始。它最终返回:

this i
s a se
ntence
123456
7890..

我在这里做错了什么?

4

4 回答 4

8

为什么要使用grep,可以使用简单的cut命令:

cut -c1-6 file

否则这个更复杂的 sed 也可以工作:

sed 's/^\(.\{6\}\).*$/\1/' file
于 2013-10-02T17:01:55.090 回答
1

使用以下命令:

grep -Eo "^.{6}" text.txt

上面的命令省略了 <6 个字符的行。要包含此类行,请使用以下命令:

grep -Eo "^.{1,6}" text.txt
于 2013-10-02T16:54:16.153 回答
0

不需要正则表达式:

$ pr -mtw6 file
this i
123456
string
于 2013-10-02T17:22:52.573 回答
0

如果您想使用grep,请尝试

grep -Po "^.{6}" text.txt
于 2013-10-02T17:15:22.087 回答