如何删除ruby中分隔符之后的所有文本
我正在尝试使用我拥有的文本文档执行以下操作:如何删除ruby中分隔符之后的所有文本,ruby,Ruby,我正在尝试使用我拥有的文本文档执行以下操作: 使用ruby导入.txt文件,将其按行拆分,并将其推送到数组中 删除数组中所有字符串后面的所有字符,包括特定分隔符 将每个数组元素写回新文本文件中的新行 我正在尝试使用ruby来完成这项工作,我已经完成了第一步,但我无法通过第二步。我现在被一系列的字符串卡住了。任何帮助都将不胜感激 这里有一些东西可以让你开始做你想做的事情。您可能希望使其更紧凑,但我将其变得冗长,以便您可以遵循流程 path_to_file = '/dir_path_to_file'
我正在尝试使用ruby来完成这项工作,我已经完成了第一步,但我无法通过第二步。我现在被一系列的字符串卡住了。任何帮助都将不胜感激 这里有一些东西可以让你开始做你想做的事情。您可能希望使其更紧凑,但我将其变得冗长,以便您可以遵循流程
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
path_to_file='/dir_path_to_file'
分隔符=':'
字符串=%w(aa:aa-bb:bb-cc:cc-dd:dd)#这是一些测试数据。替换为从文件中读入的数组
#打开文件进行写入
打开(路径到文件,'w')do |文件|
字符串。每个do|字符串|
分隔符的索引=字符串。索引(分隔符)
stripped_string=string.slice(0..分隔符-1的索引)
#将行附加到文件,并使用\n作为新行
文件假设您有这样一个文本文件:
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
您不必预先读取整个文件。一行一行地处理。甚至还有ruby的命令行开关(-n
)
假设您的分隔符是|
:
cat inputfile | ruby -ne 'puts $_.sub /\|.*/, ""' > outputfile
或者(使用-p
开关)
你想删除什么之后的所有字符?他们想切掉每一行:“按行分割,并将其推到数组中2)删除数组中所有字符串之后的所有字符并包括特定的分隔符”@mu-riilight..oops..ok。好吧,下次他们最好能更好地描述他们的问题,所以我不会提供无用的答案:)不过这仍然是一个巧妙的技巧。我把它免费放在这里。它叫触发器操作符,不是范围操作符。
cat inputfile | ruby -pe '$_.sub! /\|.*/, ""' > outputfile