当前位置: 首页 > 知识库问答 >
问题:

Ruby一个衬垫来匹配多条线

徐涵亮
2023-03-14

我有一个文本文件,有以下内容。

one two three
four five six
seven eight nine
ten eleven twelve

我正在尝试将下面的Ruby代码转换为Ruby单行命令,在该命令中,它将两行(四五六行和七八九行)替换为空白。

input = File.new('./test', 'r+')
content = input.read
input.close

modified = content.sub("four five six\nseven eight nine", "")
print modified

我试过这样的方法,但没有成功。

ruby -pe 'gsub(/four five six\nseven eight nine/,"")' < ./test

有什么想法吗?谢谢

共有3个答案

黄涵畅
2023-03-14

试试正则表达式“or”:/(四五六|七八九)/。在命令行上出现这种情况时,通常会逐行读取文件。

连坚白
2023-03-14

快速健康检查;Ruby匹配新行时没有问题:

2.0.0-p195 :159 > /abc\ndef/ === "abc\ndef"
 => true 

有一些注意事项(如果您想要,请使用m修饰符。

2.0.0-p195 :161 > /.{7}/ === "abc\ndef"
 => false 
2.0.0-p195 :162 > /.{7}/m === "abc\ndef"
 => true 

也许你在行尾有一些空白或其他东西,所以在你的正则表达式中考虑到这一点(/四五六\s*\n七八九/m

范玄裳
2023-03-14

-p标志使Ruby在get();... end'循环你的脚本(fromruby-h),从而分别运行每一行的命令,然后打印输出。取而代之的是,执行显式的get(nil)以使其一次接收整个输入,然后调用放在上面(并在正则表达式的末尾添加另一个\n,这样它就不会留下一个空行):

ruby -e 'puts gets(nil).gsub(/four five six\nseven eight nine\n/,"")' < ./test
one two three
ten eleven twelve
 类似资料:
  • 这可能令人困惑,但出于某种奇怪的原因,在:将始终出现以下错误:。尝试其他方法,如:工作正常。但这表示: 填充选项(padx、ipadx、pady和ipady)可以采用表示左/右和上/下填充的2元组。 那么,发生了什么。。。 下面是一些也有错误的完整代码: 更新:我发现你不能在Tkinter,甚至Tcl/Tk...

  • 如何在matplotlib中绘制多个条形图,当我多次尝试调用bar函数时,它们重叠,如下图所示,最高值红色只能看到。如何在x轴上绘制带有日期的多个条形图? 到目前为止,我尝试了这个: 我得到了这个: 结果应该是这样的,但是日期在x轴上,横条彼此相邻:

  • 问题内容: 这将更好地显示在我的示例中: 我有一张桌子,存储着用户从一种大表格中得到的答案。每个表格有139个问题。这些问题存储在不同的表中,并在需要时与questionID结合在一起。对于每个用户,都有一个ID。现在,我需要进行过滤,以仅显示与特定问题匹配一个或 多个 答案的用户。 例如,我希望用户在问题14中回答为“是”,问题54不为空且问题100大于10的情况下。表的外观如下: 结果,我只希

  • 如何精确匹配img标记的多个实例?我读了一些关于preg_match的教程,但从未真正理解。 我以此为基础: 我做了一个小的像正则表达式: 在这之后,我就卡住了。我如何继续匹配所有直到两个字符串的末尾? 我在PHP网站上发现了数组部分: 使用我的代码,我如何获得图像URL和alt标签? 谢谢

  • 是否可以让Selenium匹配多个类名? 例如: 谢谢

  • 我正在索引一个产品名'T恤‘。我的分析器会中断not-shirt'=>not'、'shirt'、'tshirt'。我正在使用带有catenate_words和空白标记器的WordDelimiterFilter。但我不希望搜索在查询'shirt'时呈现not-shirts',它确实这样做了。谢谢

  • 问题内容: 我正在尝试匹配模式: 以下仅匹配第一次出现的情况: 结果是: 但是,[使用pythex似乎可以正常工作](http://pythex.org/?regex=%3C–(%5B%5Cw%5Cs%5D%2B)–%3E(%5B%5Cs%5CS%5D*%3F)(%3F%3D%5Cn%3C–%7C%24)&test_string=%3C–%20Option%201%20–%3E%0ANice%20