我正在尝试使用./
删除两个字符之间的sed
,但未获得所需的输出。
示例:
e2b66a3d84ee448c33d7f2a2f7e51c58 ./2017_06_10_0400.txt
我尝试了以下操作,但它没有按预期方式工作,即使“ .
”中的.txt
也被删除。
sed -i 's/[./,]//g'
尝试一下:
echo "e2b66a3d84ee448c33d7f2a2f7e51c58 ./2017_06_10_0400.txt" | sed -e 's|./||'
注意:在您知道代码可以正常工作之前,不要考虑使用-i
选项。您可以花大时间搞砸!
用途:
sed -e 's%[.]/%%g'
您可以在s///
命令中选择定界符,并且当正则表达式包含/
时,选择其他内容是明智的–当文本中未包含%
时,我经常使用。 -e
是可选的。
[请注意-i
选项在GNU sed
和BSD(macOS)sed
中的行为有所不同。两者都可以使用-i.bak
(对于任意的非空字符串,例如.bak
)。否则,您的代码将无法移植。
您有:
sed -i 's/[./,]//g'
麻烦之处在于,它会孤立查找.
,/
或,
中的任何字符-因此它将删除.
中的.txt
以及.
和[C0 ]在/
中。您需要寻找连续的字符-如我建议的解决方案中一样。