У меня есть текстовый файл, который имеет следующий контент.Ruby one liner для соответствия нескольким строкам
one two three
four five six
seven eight nine
ten eleven twelve
Я пытаюсь преобразовать следующий 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
Любая идея? Благодаря!
Возможно, регулярное выражение «или» помогло бы: '/ (четыре пять шесть семь восемь девять) /'. В таком случае, как в командной строке, часто бывает, что файл будет считаться по очереди. – abiessu
Почему «один лайнер»? Это искусственное ограничение и, возможно, не лучший способ. Вы хотите «пустое пространство» или хотите усечь согласованный текст? Вы усекаетесь, но говорите, что хотите «пустое пространство», которое является туманным термином. И почему бы просто не использовать 'sed', который будет работать намного быстрее? –