我需要截断sed
所有内容,包括一行中的某个字符(在本例中为]
)。
典型线路:
*15:36:40,038 [Some text] More text ...*
*15:57:40,038 [123] More text ....*
把另一个收起来,把所有东西都换掉,直到]
一无所有。实现这一目标的最巧妙方法是什么?
在提供建议时,我将非常感谢对正则表达式(或 bashcut
命令的用法)的解释,以进一步了解我的知识。
非常感谢
解决方案
你必须这样做:
sed 's/[^]]*\]//'
例子
$ echo 15:36:40,038 [Some text] More text ... | sed 's/[^]]*\]//'
More text ...
解释
[^]]*
表示除]
\]
方法]
如果你想把所有东西都剪到最后一个“]”(例如有更多的 [..] 对),你可以尝试:
awk -F']' '{print $NF}' file
例子:
kent$ echo "15:36:40,038 [Some text] More text ... "|awk -F']' '{print $NF}'
More text ...
kent$ echo "15:36:40,038 [Some text] xxx yyy [some other foo] More text ... "|awk -F']' '{print $NF}'
More text ...
你的例子 cut :
kent$ echo "15:36:40,038 [Some text] More text ... "|cut -d] -f2
More text ...