我在文件名中使用多个斜杠时遇到了一些问题,我想将它们替换为一个斜杠。
这些是在多个bash脚本相互调用的基础上生成的。
所以文件名就像
const myFunction_4 = (payload: IMyFunctionInput): IMyFunctionOutput => {
return {
a: 1,
b: 2,
c: 3 // Object literal may only specify known properties, and 'c' does not exist in type 'IMyFunctionOutput'.
};
};
应该用看起来像这样的东西代替
/dir1/dir2/dir3//dir4////text3.txt
它在bash脚本中运行,因此应使用sed之类的基本内容。
谢谢
答案 0 :(得分:5)
请您尝试以下。
sed -E 's#/+#/#g' Input_file
输出如下。
/dir1/dir2/dir3/dir4/text3.txt
说明: :向-E
添加sed
选项将使我们能够将ERE添加到解决方案中。与sed
的常规分隔符不同,/
使用#
作为sed
命令的分隔符(为避免混淆,因为OP的样本在Input_file中包含/
,因此其最好使用不同的分隔符),然后提及/+
将替换所有/
的出现,并将它们与单个/
g
标志一起使用,以确保其在全局范围内发生。
答案 1 :(得分:3)
您可以使用tr
的“ squeeze” 选项:
echo "/dir1/dir2/dir3//dir4////text3.txt" | tr -s '/'
/dir1/dir2/dir3/dir4/text3.txt
答案 2 :(得分:0)
使用awk
awk '{$1=$1}1' FS="/+" OFS="/" file
/dir1/dir2/dir3/dir4/text3.txt
将输入字段分隔符设置为一个或多个/+
,将Output FS设置为一个/