如何在sed命令中使用文件名?

傻瓜

.conf除了具有不同的文件名之外,在同一目录中有许多文件相同。在每个唯一命名的.conf文件中,我想用文件名替换文件中的一组字符。例如:

当前在所有文件中:

datafname = example.nex
ofprefix = best.example

理想输出:

文档名称: 25.conf

datafname = 25.nex
ofprefix = best.25

文档名称: 26.conf

datafname = 26.nex
ofprefix = best.26

我以为我可以sed遍历所有这些文件来查找文本字符串,并将其替换为文件名,例如:

sed -i conf 's/example/echo $f/g' *

但这不能正常工作。有人会建议如何做吗?

鸭鸭

你可以做:

for f in *.conf; do
    base=$(basename "$f" '.conf') # gives '25' from '25.conf'
    sed -i.before "s/example/$base/g" "$f"
done

使用-i切换到时sed,必须绝对确保sed命令可以正常运行,因为-i在适当位置更改文件这意味着生成的输出将覆盖输入文件。如果替换命令(s/…/…/)错误,则最终可能会得到空文件且没有备份。因此,我使用-i.before它将保留*.before原始内容文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Linux bash如何在复制命令中使用通配符结果作为文件名

在find命令中如何在文件名中使用变量?

如何在 PHP 的文件名中使用“«”?

如何在ImageMagick中使用输入文件名?

Jenkins-如何在文件名中使用变量

如何在shell中使用文件名填充变量

如何在文件名中使用变量?

如何在文件名中使用正斜杠?

如何在python中使用路径添加文件名?

如何在imacros中使用javascript读取文件名

如何在Windows命令行中的文件名和批处理脚本中使用日语字符?

如何在批处理文件中使用sed命令

如何在文件中使用sed命令删除模式?

单个命令如何在一个程序中使用 stdin 而在另一个程序中使用文件名

如何在目录中使用文件名python中的最大数量获取文件名?

如何在sed命令中使用变量

如何在sed命令中使用变量

如何在sed命令中使用数字?

如何在sed命令中使用变量?

如何在Apache骆驼中使用文件名Date轮询文件?

如何在cmd / powershell中使用增量文件名创建批量空文件?

如何在文件名中使用带反斜线的同上复制文件

如何在Linux中使用大写的文件名删除文件?

读入文件时如何在文件名中使用通配符

如何在管道命令中多次使用当前文件名?

使用-exec时如何在find命令中输出文件名?

如何使用sed写入存储在变量中的文件名?

如何使用sed仅获取文件名

如何在Python中使用Glob在文件名中添加字符?