如果有其他的脚本语言,也请列举
回复内容:
- 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很强大,没用过。。。主要是自己正则不好,总觉得一串的正则像天书一样