【发布时间】:2015-01-29 10:48:58
【问题描述】:
我正在目录中查找字符串“gem '”和字符串“'”之间的所有内容。
例如:
gem 'mysql2'
在上面的示例中,我会寻找这样的输出:
mysql2
我参与过几个 Rails 项目,所以我想从他们的 gem 文件中列出我迄今为止使用过的所有 gem。
重要的是我还可以将数据输出保存在文本文件中。
【问题讨论】:
我正在目录中查找字符串“gem '”和字符串“'”之间的所有内容。
例如:
gem 'mysql2'
在上面的示例中,我会寻找这样的输出:
mysql2
我参与过几个 Rails 项目,所以我想从他们的 gem 文件中列出我迄今为止使用过的所有 gem。
重要的是我还可以将数据输出保存在文本文件中。
【问题讨论】:
你可以使用awk:
s="gem 'mysql2'"
awk -F"'" '{print $2}' <<< "$s"
mysql2
要保存输出使用:
var=$(awk -F"'" '{print $2}' <<< "$s")
说明:
-F"'" - 使用 ' 作为字段分隔符print $2 打印第二个字段,即单引号内的字符串同样的事情使用grep -oP:
grep -oP "'\K[^']+" <<< "$s"
mysql2
【讨论】:
grep -roP "gem '\K[^']+" 这是使用的确切命令,这对我有帮助。 +1
awk -F"'" '{print $2}' file,但grep 对递归搜索的支持更好。
除了另一个答案,还有另一种方法可以提取两个单引号之间的字符串。
echo "gem 'mysql2'"|cut -d"'" -f2
解释如下,
cut -d"'" -f2
cut 命令将使用分隔符 ' 从文本 gem 'mysql2' 中查找第二个字段。
输出将如下,
mysql2
这是我尝试过的,
【讨论】: