我正在尝试读取一堆.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
答案 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