捕获每行的前n个字符

时间:2013-10-02 16:52:22

标签: regex grep

我在捕捉每一行的前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 个答案:

答案 0 :(得分:4)

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

cut -c1-6 file

或者这个更复杂的sed也可以起作用:

sed 's/^\(.\{6\}\).*$/\1/' file

答案 1 :(得分:1)

使用以下命令:

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

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

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

答案 2 :(得分:0)

如果您想使用grep,请尝试

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

答案 3 :(得分:0)

不需要正则表达式:

$ pr -mtw6 file
this i
123456
string