问题描述
我有一个类似的文件:
09/03/2018 t38940 "https:/dsdsadasdsa.dsadsa.dsadsa
09/03/2018 x38940 "https:/dsadas.dsad.dsa
09/03/2018 d38940 "https:/dasdsa.dsadas.dsadsa
09/03/2018 (38940 "https:/dsadas.dsadasd.dsa
09/03/2015 )38940 "https:/dsds.dasdas.d
我想得到结果:
09/03/2018 38940 "https:/dsdsadasdsa.dsadsa.dsadsa
09/03/2018 38940 "https:/dsadas.dsad.dsa
09/03/2018 38940 "https:/dasdsa.dsadas.dsadsa
09/03/2018 38940 "https:/dsadas.dsadasd.dsa
09/03/2015 38940 "https:/dsds.dasdas.d
我想删除第 2 列开头的数字和字符(始终只有一个字符).
I want to remove numbers and characters attached to the 2nd column on the beginning (it is always only one character).
我如何编写 sed 命令来获得它?
How can I write a sed command to get that?
推荐答案
我假设您的列始终由一个空格分隔.
I'm assuming that your columns are always separated by a single space.
捕获第一列\([^ ]* \)
(零个或多个非空格字符,后跟一个空格),并忽略下一个字符.
(不要将其包含在替换中):
Capture the first column \([^ ]* \)
(zero or more non-space characters, followed by a space), and ignore the next character .
(don't include it in the replacement):
sed 's/\([^ ]* \)./\1/' file
更一般地,要对第 N 列执行此操作,然后捕获 N-1 次重复,例如:
More generally, to do this for the Nth column, then capture N-1 repetitions, e.g.:
sed 's/\(\([^ ]* \)\{2\}\)./\1/' file
将删除第 3 列的第一个字符.
would remove the first character of the 3rd column.
使用 -E
来使用 ()
和 {}
不带反斜杠:
Use -E
to use ()
and {}
without backslashes:
sed -E 's/(([^ ]* ){2})./\1/' file
这篇关于在 Bash/sed 中分隔字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!