【发布时间】:2010-08-24 20:37:18
【问题描述】:
我有一个类似这样的 cshell 脚本:
`netstat -ap | & grep tcp | grep myprocess | awk '{print $4}' | awk 'BEGIN { FS = :"}{print $2}'`
这就是它的工作原理
1.
$ netstat -ap | & grep tcp | grep myprocess
tcp 0 0 *:1234 *:* LISTEN 8888/myprocess
2.
$ netstat -ap | & grep tcp | grep myprocess | awk '{print $4}'
*:1234
3.
$ netstat -ap | & grep tcp | grep myprocess | awk '{print $4}' | awk 'BEGIN { FS = ":"}{print $2}'`
1234
我需要使用 Perl 使其尽可能便携。我认为没有netstat 和grep 的行为就无法保证可移植性,所以我会尽量确保它们在目标系统上得到支持。
我在找
- 要使 Perl 脚本具有可移植性,需要牢记哪些一般注意事项?
- 如何在 Perl 中复制
awk行为? - 我也可以在 Perl 中复制
grep的行为吗?这样做是否可取(只有在 Perl 的 grep 有任何优势时我才会这样做)?
[我在这里针对所有流行的 Windows 和 Linux 版本]
【问题讨论】:
-
@gbacon: 不是 PERL =
Practical Extraction Report Language? -
=> 那是一个反义词,原名不代表任何东西,语言的专有名称是
Perl,解释器的名称是perl -
awk '{print $4}' | awk 'BEGIN { FS = ":"}{print $2}'可以替换为单个 awk 语句awk '{split($4,:,a);print a[2]}'
标签: perl shell awk grep portability