perl、python、awk、sed之间有哪些区别?处理文本使用那种脚本语言比较好?理由是什么?

如果有其他的脚本语言,也请列举回复内容:
sed – when you need to do simple text transforms on files.awk – when you only need simple formatting and summarization or transformation of data.perl – for almost any task, but especially when the task needs complex regular expressions.python – for the same tasks that you could use perl for. 这里回答很全了:http://stackoverflow.com/questions/366980/what-are-the-differences-between-perl-python-awk-and-sed
在文本处理上awk的能力是很强的,为了方便有可能你会把它和sed一起使用,因为利用sed可以很方便的使用正则,正则方面awk就弱了点,比如在处理文本时有可能你会先用sed进行初步处理,然后再使用awk就会降低逻辑复杂度。至于python也可以处理文本,不过要是处理的逻辑不是特别复杂,建议使用awk ,因为同一个复杂度的逻辑,python的代码量通常会很大。
awk的使用场合蛮有趣的,很多任务可以用awk来处理,比如今晚,我下了个字幕发现同时有中英文字幕,占屏幕很大块儿,然后一句话就可以去掉英文字幕: gawk.exe “$0 !~ /^[a-za-z]/ {print $0}” 1.srt > 2.srt 🙂
perl, ruby, python,按推荐指数降序,同时也是学习难度降序。简单的处理用 sed / awk。
处理文本别用regex, awk这些one-liner语言,老老实实用你最熟的泛用型语言,多步加工,用多个中间变量和多行处理最好,这样既容易理解又容易排错那些one-liner除了看起来“紧凑”,真的是一无是处

如果没有掌握任何一个,那么都试试,哪个顺手,且身边有人可以请教,那就是最好的。
哪一个语言都可以干不少事了。
python什么都可以干。awk主要在于统计数据和报表。sed主要在于正则,但看着头晕。
perl是文本处理的第一选择,想一行代替awk sed很容易,想写出可读性高的程序也很容易,看你怎么用,有些初学者瞎用perl导致4不像,perl是一种越用开发效率越高的语言,永python还不如用java 配groovy
sed自己用的不多,主要用在批量替换里面这地方有一个小技巧,sed不要用默认的/做分隔符,太麻烦了,一般我用#号,也可以用其他的字符,比如@之类的字符sed -n “s#a#b#gp” 验证下是不是对的,sed -i “s#a#b#g” 更改文件明显的分列的输入数据,过滤,改变输出的格式,比如单独print一个字段,用awk方便一点一般复杂一点的统计,比如涉及多行的统计之类的,都用python,也就3,4行传说perl很强大,没用过。。。主要是自己正则不好,总觉得一串的正则像天书一样

Posted in 未分类

发表评论