【发布时间】:2014-02-11 07:10:14
【问题描述】:
我正在尝试使用 Bash 'expr index" 获取索引位置。
例如
$ echo `expr index "Info.out.2014-02-08:INFO|SID:sXfzRjbmKbwX7jyaW1sog7n|Browser[Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0]" Mozilla`
我正在尝试获取单词“Mozilla”的索引位置,然后使用索引值获取子字符串。
我得到的结果是4。是Info之后的时间导致问题吗?我该如何解决这个问题?
我遵循了高级 Bash 脚本指南 www.tldp.org/LDP/abs/html/。请参见表 B-5 部分。字符串操作
expr index "$string" $substring $substring* 中匹配的第一个字符在 $string 中的数字位置 [0 如果不匹配,第一个字符计为位置 1]
我尝试了一些简单的方法,它确实有效。
我在 cygwin 中运行 bash。
$ ./bash --version
GNU bash, version 4.1.10(4)-release (i686-pc-cygwin)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
谢谢。
【问题讨论】:
-
其实这是独立于
bash的,因为expr是一个可以从任何shell运行的独立程序。 -
您的实际目标是什么?也就是说,一旦你得到了索引,你想检索它之后的所有东西吗?之前呢?对于任何这些情况,根本不需要使用索引——一个简单的 PE 表达式就可以匹配你真正关心的内容。
-
顺便说一句——ABS 是一个很差的参考;在 freenode 的 #bash 中,我们经常不得不帮助人们改掉他们从中养成的坏习惯。 mywiki.wooledge.org/BashGuide 和 mywiki.wooledge.org/BashFAQ 是更好的起点。
标签: bash