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 个字符之后的任何字符。
使用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)