请原谅我,如果这是一个微不足道的问题,我对此没有多少经验。
我有一个看起来像这样的文件:
{text},
{text},
{text},
{text},
我希望它看起来像这样
[{text},
{text},
{text},
{text}]
请注意,最后一个逗号被删除,并且文件的开头和结尾处现在有方括号。
因此,我在目录中有数千个文件,每个文件都必须修复才能完成。
我猜我必须以某种方式使用sed,但我不知道如何实现它并且不想使用VIM手动执行它,因为有太多的文件..
编辑:
我试图使用:
sed -i '1s/^/\[/;$s/,$/\]/' *
正如codeforester所建议的那样。我得到一个错误说"参数列表太长" ...
答案 0 :(得分:2)
我会删除sed
行末尾的现有逗号,然后使用jq
构建json数组:
sed 's/,$//' file | jq -s .
要在许多文件上运行此操作,我建议创建一个小shell脚本:
fix-json.sh
#!/bin/bash
file="${1}"
sed 's/,$//' "${file}" | jq -s . > "${file}.tmp"
if [ ${PIPESTATUS[1]} != 0 ] ; then
echo "${file} is broken"
rm "${file}.tmp"
else
mv "${file}.tmp" "${file}"
fi
现在使用find
在输入文件上运行上述脚本:
chmod +x fix-json.sh
find /path/to/files -type f -name '*.json' -exec ./fix-json.sh {} \;