Regex 如何缩短正则表达式?
首先,我对正则表达式比较陌生:我已经构建了一个正则表达式,它与sed一起使用,对我来说很好,它看起来像:Regex 如何缩短正则表达式?,regex,sed,Regex,Sed,首先,我对正则表达式比较陌生:我已经构建了一个正则表达式,它与sed一起使用,对我来说很好,它看起来像: sed/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|信息| tst.33.12.carmen//g'但我很确定所有重复出现的字符都可以简化。我该怎么做 我想替换: 20180630180212.407107 | info | tst.33.12.carm
sed/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|信息| tst.33.12.carmen//g'
但我很确定所有重复出现的字符都可以简化。我该怎么做
我想替换:
20180630180212.407107 | info | tst.33.12.carmen |!:代码>来自文本行(前面的时间戳可以是任何数字,第一个“|”后面的字符串是常量)编辑:,因为OP现在已放置输入样本,所以添加此解决方案
sed -E 's/^[0-9]{8} [0-9]{6}\.[0-9]{6} \| info \| tst\.[0-9]{2}\.[0-9]{2}\.carmen \| \!:$//' Input_file
代码工作测试:
假设以下是输入_文件:
cat Input_file
20180630 180212.407107 | info | tst.33.12.carmen | !:
fdfjwhfwifrwvf
vwkdnvkwkvwnvwv
20180630 180212.407107 | info | tst.33.12.carmen | !:
dwbvwbvwvbb
现在在运行上述代码之后,下面将是输出
sed -E 's/^[0-9]{8} [0-9]{6}\.[0-9]{6} \| info \| tst\.[0-9]{2}\.[0-9]{2}\.carmen \| \!:$//' Input_file
fdfjwhfwifrwvf
vwkdnvkwkvwnvwv
dwbvwbvwvbb
使用sed
的-E
选项,您可以像下面一样使用,但要注意,它是从您的解决方案中选择的,并且从未测试过,因为您的帖子中没有生成任何样本
sed -E 's/^[0-9]{8} [0-9]{5}.[0-9]{5} | info | tst.33.12.carmen | !: //g'
如果您不想匹配前缀的确切格式,只想接受一些数字、点和空格的组合,您可以将第一部分简化为:
[ .0-9]*
完整的sed
表达式如下所示:
sed 's/^[ .0-9]*| info | tst\.[0-9]*\.[0-9]*\.carmen | !:$//' file
不确定是否在这里,但在javascript正则表达式中,您可以执行8次[0-9]{8}
(8位为\d{8})。请尝试始终添加带有代码标记的输入样本和输出样本,以便回复者能够测试解决方案并更好地理解问题。@RavinderSingh13请参阅更新的问题我已经添加了我想要的部分replace@cerr,当然很酷,谢谢添加样品。你能检查一下我的编辑答案并告诉我这是否对你有帮助吗?@cerr,我已经在帖子中添加了一个测试输入文件和代码测试,请告诉我。