2015-05-21 3 views
0

У меня есть список устройств:Написание регулярных выражений результат в новый файл

  • ИПК-bei640-р-бр-01
  • ИПК-bei640-р-уш-02
  • МПК -bei640-р-уш-03
  • ИПК-bei640-р-уш-04
  • ИПК-bei640-р-уш-05
  • ИПК-bem640-р-уш-01
  • ИПК-bem640 -r-br-02
  • ИПК-bem640-р-уш-03
  • ИПК-crg660-р-уш-02
  • ИПК-geb680-р-уш-04
  • ИПК-lgv630-р-уш-01

Этот маленький маленький рубиновый скрипт подсчитывает строки файла braslist.txt сканирует его с помощью регулярных выражений и записывает результаты в NewFile под названием «strippedfile.txt»

lines = IO.readlines("/usr/local/bin/braslist.txt") 

# Linecount is forwarded to StdOut. 
puts lines.length 

str = File.read('braslist.txt') 

file_name = ['strippedfile.txt'] 

file_name.each do |file_name| 
    text = File.read(file_name) 
    new_contents = str.scan(/^ipc-(?<bng>[a-z]{3}\d{3})-r-br(?<nr>-\d{2})$/) 

# open and write to a file with ruby 
open('strippedfile.txt', 'w') { |f| 
    f.print new_contents 
} 

end 

Теперь то, что я не могу показаться, чтобы исправить, находится в новом файле «strippedfile» re («bei640», «-02»] [«bei640», «-03»]

И я стараюсь привести все результаты в таком формате:

  • bei640-01
  • bei640-02
  • bei640-03
  • bei640-04

ответ

1

scan возвращает массив совпадений, вы, вероятно, хотите join им:

- new_contents = str.scan(/^ipc-(?<bng>[a-z]{3}\d{3})-r-br(?<nr>-\d{2})$/) 
+ new_contents = str.scan(/^ipc-(?<bng>[a-z]{3}\d{3})-r-br(?<nr>-\d{2})$/).map(&:join) 

To print everything without quotes and brackets line by line: 

- f.print new_contents 
+ f.puts new_contents 
+0

Для wh на do -/+ стоят? – user3820869

+0

Это стандартный синтаксис git/mercurial/svn для удаленных/добавленных строк. – mudasobwa

+0

Ah nvm я понимаю :) – user3820869

1

Если предположить, что результирующий массив является

a = [["bei640", "-02"], ["bei640", "-03"]] 

Вы можете использовать join, чтобы получить желаемый результат

a.map{|i| i.join } #=> ["bei640-02", "bei640-03"] 

или использовать ярлык, как mudasobwa ответил

a.map(&:join) #=> ["bei640-02", "bei640-03"] 
Смежные вопросы