我正在尝试使用我拥有的文本文档执行以下操作:
我正在尝试使用ruby这样做,我已经完成了第一步,但我无法通过第二步。我现在被一系列字符串困住了。任何帮助将不胜感激。
答案 0 :(得分:1)
这是让你开始做你想做的事情的东西。你可能想让它变得更紧凑,但我把它弄得很冗,所以你可以按照流程
path_to_file = '/dir_path_to_file'
delimiter = ':'
strings = %w(aa:aa bb:bb cc:cc dd:dd) # this is some test data. replace with your array read in from file
# Open file for writing
File.open(path_to_file, 'w') do |file|
strings.each do |string|
index_of_delimiter = string.index(delimiter)
stripped_string = string.slice(0..index_of_delimiter - 1)
# append line to file with \n for new line
file << stripped_string << "\n"
end
end
答案 1 :(得分:1)
假设你有一个这样的文本文件:
aaa
bbb
BEGIN
xxx
xxx
END
ccc
你可以使用触发器操作符的“脏”小Ruby技巧:
# Load file
lines = File.readlines("the_text_file")
# Reject all lines between BEGIN and END
lines.reject! { |line| true if (line =~ /^BEGIN/)..(line =~ /^END/) }
# Output result
puts lines
输出:
aaa
bbb
ccc
答案 2 :(得分:0)
您不必提前阅读整个文件。只需逐行处理。甚至还有一个ruby的命令行开关(-n
)。
说你的分隔符是|
:
cat inputfile | ruby -ne 'puts $_.sub /\|.*/, ""' > outputfile
或(使用-p
开关),
cat inputfile | ruby -pe '$_.sub! /\|.*/, ""' > outputfile