对,waker 版主举的就是一个例子。
他那个问题用 sed 很容易解决,但是用 awk 就比较费劲。
其实这也就是我学习 Perl 的原因,
shell 下工具众多,功能也互相重复,
最头疼的是,这些重复部分的语法还各不相同,(比如 grep awk sed 都有正则表达式匹配的功能,但是三者的正则表达式语法就不相同)
最最最头疼的是,每个工具还分 GNU 版和不是 GNU 版,之间的差别也很大,
最最最最最头疼的是,即使都是 GNU 版,那么版本号的细微差别也会带来很多差别。
但是,用 Perl 做这些事,统统都能办到,而且统统都不太复杂。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
普通的行处理任务用sed很好,因为命令很简洁。
awk最好的部分是它按“列”或“字段”处理的方式和“关联数组”,但awk对正则表达式支持的程度比sed要差些,例如sub/gsub中不能用/1, /2这样的向前引用。gsed中的gensub是可以的,但必须写成//1, //2。
perl应该说结合了sed/awk的优点,尤其是强大的正则表达式是我的最爱。^_^不过据说有的unix平台下缺省没有安装。
有时间的话都学学吧。
awk最好的部分是它按“列”或“字段”处理的方式和“关联数组”,但awk对正则表达式支持的程度比sed要差些,例如sub/gsub中不能用/1, /2这样的向前引用。gsed中的gensub是可以的,但必须写成//1, //2。
perl应该说结合了sed/awk的优点,尤其是强大的正则表达式是我的最爱。^_^不过据说有的unix平台下缺省没有安装。
有时间的话都学学吧。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
嗯,楼上的说的不错,
其实现在 Linux 基本上都是缺省安装的,
FreeBSD 缺省也安装,
小型机上估计 Perl 不多见(缺省情况下)
不过 Perl 还有一点优势,那就是 Windows 下有完美的支持,而 sed 和 awk 因为 windows 讨厌的“双引号问题”,因此工作起来都不是很爽,
不过写成脚本执行还是可以的。
sed/awk/grep 的好处在于,它们大多数都是单一文件的软件,因此在小系统上要比 Perl 好使,Perl 动辄数十M……
其实现在 Linux 基本上都是缺省安装的,
FreeBSD 缺省也安装,
小型机上估计 Perl 不多见(缺省情况下)
不过 Perl 还有一点优势,那就是 Windows 下有完美的支持,而 sed 和 awk 因为 windows 讨厌的“双引号问题”,因此工作起来都不是很爽,
不过写成脚本执行还是可以的。
sed/awk/grep 的好处在于,它们大多数都是单一文件的软件,因此在小系统上要比 Perl 好使,Perl 动辄数十M……