Answers
运维和开发人员都有必要学习使用
awk
和
sed
这两个工具。
- 运维人员利用这两个工具查看日志,可以快速定位问题;
- 批量修改配置,省去繁琐的重复动作;
- 这两个工具也经常应用于编写脚本中,这点对于开发人员同样是必要的。
开发人员遇到最多的问题其实就是文本处理,其次才是算法问题或者输入输出问题,
awk
和
sed
这两个工具,配合正则表达式使用,如有神器在手,天下我有的感觉。
但是题主提到通常是为了处理
JSON
和
HTML
这两种文本的,要知道工具都有它的局限性。
1. 处理JSON
处理JSON时,JavaScript/Node.js大概是这么做的,
var obj = require('./obj.json');
// change obj
obj._id = 1001;
obj._key = "new-key";
// and other codes
// save obj object to obj.json
fs.writeFile('./obj.json', JSON.stringify(obj), function(err) {
if(err) throw err;
});
使用
sed
和正则表达式来修改简单的
JSON
是可以接受的,但是遇到复杂的
JSON
格式那可就是难以想象了。
但是如果你不会或者不想写
Node.js
来处理
JSON
文件,你更加熟悉
shell
脚本,那么我推荐这个工具
jq
is a lightweight and flexible command-line JSON processor.从它的简介中也可以看得出
jq
工具是和
sed
工具等比较相似的,但是比原来的
sed
更加适合处理JSON文件。
2. 处理HTML时
处理
HTML
时,由于
HTML
是标签式语言,包括配对(
<tag>
</tag>
)和自闭合(
<tag>
</tag>
两种形式,都是使用
awk
和
sed
工具时经常需要考虑,还有跨行问题。解决这些问题在
awk
或者
sed
中都需要扩展(或者高阶)表达式的支持,也要求开发、运维人员能够掌握正则表达式的反向引用、分组、不捕获分组及环视的技巧。不过好像
Perl
程序员对这些问题不会那么苦恼。
3. 综合
综合题主的情况,我觉得你还是不要伤了给你推荐这两个工具的那位大神的心了,抽空看下嘛,顺便抛几个难题给大婶就好了,难题就从
JSON
和
HTML
这两种格式文件中设计就好了。
不要谢我。