Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby one liner只替换匹配的行,丢弃其他行_Ruby_Regex - Fatal编程技术网

Ruby one liner只替换匹配的行,丢弃其他行

Ruby one liner只替换匹配的行,丢弃其他行,ruby,regex,Ruby,Regex,正在查找ruby one liner替换,以仅在该行与正则表达式匹配时打印替换: echo-e“第1行\nLine 2\nLine 3”| perl-ne“如果替换了s/Line 2/Line 2,则打印其他内容/g” 输入: Line 1 Line 2 Line 3 输出: Line 2 replaced, others discarded 据我所知,在ruby中没有与-ne速记等价的东西。因此,时间不会太长: echo -e "Line 1\nLine 2\nLine 3" | ruby

正在查找ruby one liner替换,以仅在该行与正则表达式匹配时打印替换:

echo-e“第1行\nLine 2\nLine 3”| perl-ne“如果替换了s/Line 2/Line 2,则打印其他内容/g”

输入:

Line 1
Line 2
Line 3
输出:

Line 2 replaced, others discarded

据我所知,在ruby中没有与
-ne
速记等价的东西。因此,时间不会太长:

echo -e "Line 1\nLine 2\nLine 3" | ruby -e 'puts $<.read.lines.map {|l| l =~ /Line 2/ ? l.gsub(/Line 2/, "Line 2 replaced, others discarded") : nil }.compact'

echo-e“第1行\nLine 2\nLine 3”| ruby-e”放入$
string.scan(/^Line 2$/).map{x | x.gsub(/2/,“2已替换,其他已丢弃”)。连接(“\n”)
第2行是否应等于整行?您的Perl示例没有检查行的开始/结束位置。
“第1行\nLine 2行\nLine 3行\nLine 2”的预期输出是什么?@WiktorStribiżew,我不关心行的开始/结束。这只是一个例子。我只是在找Ruby的食谱。正则表达式本身并不重要。谢谢你的关心。有人想解释一下反对票吗?我相信我的问题是正确的;我找到了很多用ruby替换“perl-pe”的例子,但没有一个适合这种情况。我接受你的答案,因为它符合要求。我现在可以用ruby替换我的perl one liner,因为perl在处理多字节unicode字符方面存在问题。Ruby和Python没有这些问题,但是缺少了实用的“-ne”特性。我怀疑不存在“-ne”,因为我在网络上搜索到的结果是无效的,但我很高兴你证实了这一点,并仍然向我展示了一个简单的单行程序解决方案。如果你觉得我的问题值得,请把它投上去,以抵消那些投反对票的人(我的问题有什么问题?)