因此,我正在处理一个项目,在这个项目中,我需要读取串行端口的输出,并将其存储在JSON格式的文件中。这项工作已经完成:
#!/bin/bash
while :
do
echo '{"content": "' > /home/pi/bticino/assets/bash/lastCommands.json
cat /home/pi/bticino/assets/bash/serialContent.json >> ./lastCommands.json
echo '"}' >> /home/pi/bticino/assets/bash/lastCommands.json
cat /home/pi/bticino/assets/bash/lastCommands.json |tr -d "\n" > /home/pi/bticino/assets/bash/serialF.json
sleep 5
done当有时(随机),奇怪的字符开始出现在我的输出文件(serialContent.json和serialF.json)上时,问题就出现了。当这种情况发生时,JSON解析器就会失败。
在该文件中,我只需要存储0-9位数字、*'s和#s。有办法用正则表达式实现吗?
这是我需要保存在文件中的内容类型:
*#1###1###1###1###1###1###1###*13*198564874*1*##*#1###1###1###1###1###*1##
谢谢您的回答@,我不得不修改我的脚本,这样它就不会修改我的json语法(我忘了提到),结果是这样的:
#!/bin/bash
dir=/home/pi/bticino/assets/bash
while :
do
echo '{"content": "' > $dir/lastCommands.json
< $dir/serialContent.json tr -dc '[:digit:]*#' >> $dir/lastCommands.json
echo '"}' >> $dir/lastCommands.json
cat $dir/lastCommands.json |tr -d "\n" > $dir/serialF.json
sleep 5
done发布于 2014-12-15 21:41:36
扩展tr的使用范围,去掉UUOC:替换:
cat /home/pi/bticino/assets/bash/lastCommands.json |tr -d "\n" > /home/pi/bticino/assets/bash/serialF.json使用
dir=/home/pi/bticino/assets/bash
< $dir/lastCommands.json tr -dc '[:digit:]*#' > $dir/serialF.json也就是说,不要仅仅删除换行符,而要去掉所有不是数字、星号或八进制的东西。
https://stackoverflow.com/questions/27489919
复制相似问题