“awk”命令在SuSE 11与Solaris 10

时间:2017-06-11 20:04:50

标签: awk ksh behavior suse solaris-10

我正在尝试在ksh脚本中提取以下路径的最后一部分:

TOOL_HOME=/export/fapps/mytool/mytool-V2-3-4

我想从上面提取版本#(即2-3-4)。

awk在SuSE上正常运行:

echo $TOOL_HOME | awk -F'mytool-V' '{print $2}'
#2-3-4

但是,在Solaris 10上,它会生成以下内容:

#ytool

所以在Solaris上,awk忽略了-F'mytool-V'中第一个字符之后的所有内容

如何在两个操作系统上获得相同的输出?

3 个答案:

答案 0 :(得分:2)

在Solaris上使用/ usr / xpg4 / bin / awk,而不是/ bin / awk(又名“old,broken awk”)。

答案 1 :(得分:1)

Solaris awk已损坏......

$ echo "$TOOL_HOME" | awk '{sub(/.*mytool-V/,"")}1'
2-3-4

或仅使用sed

$ echo "$TOOL_HOME" | sed 's/.*mytool-V//'
2-3-4

答案 2 :(得分:0)

无需使用awk或任何其他外部程序。 ksh可以做到这一点:

echo ${TOOL_HOME##*mytool-V}