【发布时间】:2017-03-01 05:43:12
【问题描述】:
我有以下问题。在shell脚本中,我需要找出字符串中多个点('.')的位置。
我找到了一些解决方案,但问题是,它们可以在 Linux shell 上运行,但不能在 AIX shell 上运行。
示例:
字符串看起来像这样:someString-10.12.16.somestring.sql
(是的,它是一个文件名)
我用 grep 试过了:
echo $string | grep -aob '\.' | sed -n '2p' | cut -c 1-2)
但是AIX下的grep不支持选项-ob
我用 sed 试过了:sed 's/\([^\.]*\..*\)\..*/\1/' | wc -c
但是在那里,我收到错误消息:sed: Function s/\([^\.]*\..*\)\..*/\1/ cannot be parsed
谁能给我一个在 AIX shell 中运行的解决方案? 对于每个点,一个返回该点位置的命令。
谢谢你:-)
【问题讨论】:
-
您的预期结果到底是什么?您发布的示例仅返回第二次出现。您需要所有事件的列表吗?我不确定“对于每个点,一个返回该点位置的命令”是什么意思。
-
不,我不需要出现的列表。我需要一个命令,将位置作为特定点/句点的数字。我现在找到了解决方案:
echo "someString.0.4.text" | tr . '\n' | sed -n '2p' | wc -c但是 wc -c 命令在返回值之前打印了一些空格,这是为什么呢?稍后我会将它们剪掉并打印我的完整解决方案。