使用 SED 在每行的第 7 个字符后剪切

Phi*_*hil 3 sed text-processing

只是试图在文本的每一行的第 7 个之后剪切任何字符。

我最初尝试过这个:

sed 's/(.{7}).*/\1/' TestText.txt 
Run Code Online (Sandbox Code Playgroud)

但得到了这样的回应:

sed: 1: "s/(.{7}).*/\1/": \1 not defined in the RE
Run Code Online (Sandbox Code Playgroud)

然后尝试了这个:

$ sed 's/./&#/7' TestText.txt 
Ballbou#nce
Latllma#tattjsdf
dsfase,#d,
adfadfj#jen
asdfjov#moeo
$ sed -e 's/#.*//' TestText.txt 
Ballbounce
Latllmatattjsdf
dsfase,d,
adfadfjjen
asdfjovmoeo
Run Code Online (Sandbox Code Playgroud)

但它所做的只是删除了#. 我只想删除第 7 个字符之后的任何字符。

cha*_*aos 8

使用sed-r

sed -r 's/(.{7}).*/\1/' file
Run Code Online (Sandbox Code Playgroud)

或转义括号:

sed 's/\(.\{7\}\).*/\1/' file
Run Code Online (Sandbox Code Playgroud)

或者,您也可以使用grep-E激活扩展正则表达式,-o仅打印匹配的模式):

grep -oE '^.{7}' file
Run Code Online (Sandbox Code Playgroud)

awk

awk '{print substr($0,1,7)}' file
Run Code Online (Sandbox Code Playgroud)

当然,cut它只是为这种工作而设计的:

cut -c1-7 file
Run Code Online (Sandbox Code Playgroud)