我需要使用sed
截断一切,包括一行中的某个字符(在本例中为]
)。
典型行:
*15:36:40,038 [Some text] More text ...*
*15:57:40,038 [123] More text ....*
放下另一个,直到]
一无所获。实现这一目标的最佳途径是什么?
在提出建议时,我非常感谢对正则表达式(或使用bash cut
命令)的解释,以进一步提高我的知识水平。
答案 0 :(得分:1)
<强>解决方案强>
你必须这样做:
sed 's/[^]]*\]//'
示例强>
$ echo 15:36:40,038 [Some text] More text ... | sed 's/[^]]*\]//'
More text ...
<强>解释强>
[^]]*
表示除]
\]
表示]
答案 1 :(得分: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 ...
你的剪切示例:
kent$ echo "15:36:40,038 [Some text] More text ... "|cut -d] -f2
More text ...