如何使用sed删除Unix shell中两个字符之间的./

问题描述 投票:0回答:2

我正在尝试使用./删除两个字符之间的sed,但未获得所需的输出。

示例:

e2b66a3d84ee448c33d7f2a2f7e51c58  ./2017_06_10_0400.txt

我尝试了以下操作,但它没有按预期方式工作,即使“ .”中的.txt也被删除。

sed -i 's/[./,]//g'
shell unix sed
2个回答
1
投票

尝试一下:

echo "e2b66a3d84ee448c33d7f2a2f7e51c58  ./2017_06_10_0400.txt" | sed -e 's|./||'

1
投票

注意:在您知道代码可以正常工作之前,不要考虑使用-i选项。您可以花大时间搞砸!

用途:

sed -e 's%[.]/%%g'

您可以在s///命令中选择定界符,并且当正则表达式包含/时,选择其他内容是明智的–当文本中未包含%时,我经常使用。 -e是可选的。

[请注意-i选项在GNU sed和BSD(macOS)sed中的行为有所不同。两者都可以使用-i.bak(对于任意的非空字符串,例如.bak)。否则,您的代码将无法移植。

您有:

sed -i 's/[./,]//g'

麻烦之处在于,它会孤立查找./,中的任何字符-因此它将删除.中的.txt以及.和[C0 ]在/中。您需要寻找连续的字符-如我建议的解决方案中一样。

© www.soinside.com 2019 - 2024. All rights reserved.