【发布时间】:2014-11-18 19:50:23
【问题描述】:
手头的任务:
我有一个包含四个制表符分隔值的文件:
peter 123 five apples
jane 1234 four rubberducks
jimmy 01234 seven nicknames
我需要根据第二列从这个文件中取出一行,并且值在一个变量中。假设我将数字 123 存储在变量 foo 中。在 bash 中我可以做到
grep $'\s'$foo$'\s'
我离开了彼得的信息,没有别的了。有没有办法在 dash 或 ash 上实现相同的效果?
【问题讨论】:
-
grep "[[:space:]]${foo}[[:space:]]"使用等效的正则表达式调用 grep,而不使用任何 bash-only 功能。顺便说一句,\s旨在通过反斜杠字面意思传递给您的 grep 命令,而不是由 shell 解释,并且仅适用于您拥有符合 PCRE 的 grep 的情况(大多数不是);使用[[:space:]]是更好的做法,无论您的外壳如何。 -
...也就是说,它“等效于”一种非常糟糕的做法,因为您替换的内容将被解释为正则表达式,而不是原始字符串。对于无害的数字;对于任意内容,不是那么多。
标签: bash shell scripting dash-shell ash