首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在文件中只留下数字、星号和散列的Bash脚本?

在文件中只留下数字、星号和散列的Bash脚本?
EN

Stack Overflow用户
提问于 2014-12-15 17:45:04
回答 1查看 83关注 0票数 3

因此,我正在处理一个项目,在这个项目中,我需要读取串行端口的输出,并将其存储在JSON格式的文件中。这项工作已经完成:

代码语言:javascript
运行
复制
#!/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语法(我忘了提到),结果是这样的:

代码语言:javascript
运行
复制
#!/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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-15 21:41:36

扩展tr的使用范围,去掉UUOC:替换:

代码语言:javascript
运行
复制
cat /home/pi/bticino/assets/bash/lastCommands.json |tr -d "\n" > /home/pi/bticino/assets/bash/serialF.json

使用

代码语言:javascript
运行
复制
 dir=/home/pi/bticino/assets/bash
 < $dir/lastCommands.json tr -dc '[:digit:]*#' > $dir/serialF.json

也就是说,不要仅仅删除换行符,而要去掉所有不是数字、星号或八进制的东西。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27489919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档