Sed 在 ruby 中没有按预期工作
Sed not working as expected in ruby
我在 bash 中使用以下 sed 命令
echo "<version>1.0.216</version>" | sed -e 's@<version>\(.*\)</version>@@'
运行时给出低于输出
-bash-4.1$ echo "<version>1.0.216</version>" | sed -e 's@<version>\(.*\)</version>@@'
1.0.216
但是当我将相同的命令放入 ruby 文件中时(内容如下)
"value=`echo "<version>1.0.216</version>" | sed -e 's@<version>\(.*\)</version>@@'`
投入价值
我得到这个输出
-bash-4.1$ ruby test.rb
<version>1.0.216</version>
任何人都可以帮助我了解可能导致此行为的原因。我认为这可能与 ruby 处理正则表达式的方式有关,但我对 ruby 的正则表达式的搜索没有产生任何结果。
"value=$( echo "<version>1.0.216</version>" | sed -e 's@<version>\([^<]*\)</version>@@' )"
# or, due to shell escaping interpretation (note the double \)
"value=$( echo "<version>1.0.216</version>" | sed -e 's@<version>\([^<]*\)</version>@\1@' )"
或
"value=$( echo "<version>1.0.216</version>" | sed -e 's/.*>//;s/<.*//' )"
#for a multi line entry
"value=$( StreamOfYourData | sed -n -e '/<version>/ {s/.*>//;s/<.*//p;q;}' )"
我在 bash 中使用以下 sed 命令
echo "<version>1.0.216</version>" | sed -e 's@<version>\(.*\)</version>@@'
运行时给出低于输出
-bash-4.1$ echo "<version>1.0.216</version>" | sed -e 's@<version>\(.*\)</version>@@'
1.0.216
但是当我将相同的命令放入 ruby 文件中时(内容如下)
"value=`echo "<version>1.0.216</version>" | sed -e 's@<version>\(.*\)</version>@@'`
投入价值
我得到这个输出
-bash-4.1$ ruby test.rb
<version>1.0.216</version>
任何人都可以帮助我了解可能导致此行为的原因。我认为这可能与 ruby 处理正则表达式的方式有关,但我对 ruby 的正则表达式的搜索没有产生任何结果。
"value=$( echo "<version>1.0.216</version>" | sed -e 's@<version>\([^<]*\)</version>@@' )"
# or, due to shell escaping interpretation (note the double \)
"value=$( echo "<version>1.0.216</version>" | sed -e 's@<version>\([^<]*\)</version>@\1@' )"
或
"value=$( echo "<version>1.0.216</version>" | sed -e 's/.*>//;s/<.*//' )"
#for a multi line entry
"value=$( StreamOfYourData | sed -n -e '/<version>/ {s/.*>//;s/<.*//p;q;}' )"