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

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

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

我最初尝试过这个:

sed 's/(.{7}).*/\1/' TestText.txt 

但得到这样的回应:

sed: 1: "s/(.{7}).*/\1/": \1 not defined in the RE

然后尝试了这个:

$ 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

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

答案1

sed与以下一起使用-r

sed -r 's/(.{7}).*/\1/' file

或者转义括号:

sed 's/\(.\{7\}\).*/\1/' file

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

grep -oE '^.{7}' file

awk

awk '{print substr($0,1,7)}' file

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

cut -c1-7 file

相关内容