如何替换boolan值并重命名该文件

时间:2018-02-15 10:22:28

标签: python bash shell

我正在尝试读取一堆.csv个文件(100个或更多)用整数替换布尔值(true或false)并将文件保存为filename_conv.csv

我有以下命令将布尔值更改为int

sed -i 's/true/1/g' /file/path/*.csv
sed -i 's/false/0/g' /file/path/*.csv

并在保存文件时,如何将文件重命名为filename_conv.csv

2 个答案:

答案 0 :(得分:0)

请勿使用-i选项进行编辑:

sed 's/true/1/g;s/false/0/g' "${filename}.csv" >"${filename}_conv.csv"

根据@ViktorKhilin的建议,如果sed命令成功,添加&& rm "${filename}.csv"可以删除输入文件。

答案 1 :(得分:0)

您可以迭代以.csv结尾的文件名,并使用重定向保存shell参数展开的转换输出:

for file in *.csv; do
    sed 's/true/1/g;s/false/0/g' -- "$file" >"${file%%.*}_conv.csv"
done

shell参数扩展模式${file%%.*}剥离了上一个.的部分,这种情况为.csv

如果您还想删除原始文件:

for file in *.csv; do
    sed 's/true/1/g;s/false/0/g' -- "$file" >"${file%%.*}_conv.csv" && rm -- "$file"
done