0

我需要截断sed所有内容,包括一行中的某个字符(在本例中为])。

典型线路:

*15:36:40,038 [Some text] More text ...*
*15:57:40,038 [123] More text ....*

把另一个收起来,把所有东西都换掉,直到]一无所有。实现这一目标的最巧妙方法是什么?

在提供建议时,我将非常感谢对正则表达式(或 bashcut命令的用法)的解释,以进一步了解我的知识。

非常感谢

4

2 回答 2

1

解决方案

你必须这样做:

sed 's/[^]]*\]//'

例子

$ echo 15:36:40,038 [Some text] More text ... | sed 's/[^]]*\]//'
More text ...

解释

  • [^]]*表示除]
  • \]方法]
于 2012-08-08T15:42:48.710 回答
0

如果你想把所有东西都剪到最后一个“]”(例如有更多的 [..] 对),你可以尝试:

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 ... 
于 2012-08-08T16:05:03.637 回答