Hi all,
I have such a question, when i open a file doing some grep stuff…
File.open(‘aa.xml’).each do |line|
dev_name = ARGV[1]
if line =~ /prf:CcppAccept/…line =~ /</prf:CcppAccept>/
if line =~ /rdf:li(image|audio|video).*</rdf:li>/
line.gsub(‘rdf:liimage/jpeg’, “INSERT INTO VMPOLICY_VALUES
VALUES(’#{dev_name}’,‘jpginpage’,‘true’,’#{$ver}’)”)).gsub(
“</rdf:li>”, “;”).each do |ss|
I recive output like
INSERT INTO TABLE VALUES(1,1,1)
INSERT INTO TABLE VALUES(1,2,2)
INSERT INTO TABLE VALUES(1,1,1)
now i wanted to put only that lines which are uniqe…
INSERT INTO TABLE VALUES(1,1,1)
INSERT INTO TABLE VALUES(1,2,2)
how i can do this ??
i thought about…
puts ss.unque
but its dont work
Please Help
Regards
beny18241
beny 18241 wrote:
Hi all,
I have such a question, when i open a file doing some grep stuff…
File.open(‘aa.xml’).each do |line|
dev_name = ARGV[1]
if line =~ /prf:CcppAccept/…line =~ /</prf:CcppAccept>/
if line =~ /rdf:li(image|audio|video).*</rdf:li>/
line.gsub(‘rdf:liimage/jpeg’, “INSERT INTO VMPOLICY_VALUES
VALUES(’#{dev_name}’,‘jpginpage’,‘true’,’#{$ver}’)”)).gsub(
“</rdf:li>”, “;”).each do |ss|
I recive output like
INSERT INTO TABLE VALUES(1,1,1)
INSERT INTO TABLE VALUES(1,2,2)
INSERT INTO TABLE VALUES(1,1,1)
now i wanted to put only that lines which are uniqe…
INSERT INTO TABLE VALUES(1,1,1)
INSERT INTO TABLE VALUES(1,2,2)
how i can do this ??
i thought about…
puts ss.unque
but its dont work
Please Help
Regards
beny18241
ok i figure it out ![:slight_smile: :slight_smile:](/images/emoji/apple/slight_smile.png?v=6)
puts ss unless ss == @prev; @prev = ss
cheers
On 20.12.2009 12:50, beny 18241 wrote:
line.gsub('<rdf:li>image/jpeg', "INSERT INTO VMPOLICY_VALUES
now i wanted to put only that lines which are uniqe…
but its dont work
puts ss unless ss == @prev; @prev = ss
That works only if the input is ordered. For unordered input here’s an
efficient way:
require ‘set’
unique = Set.new
File.foreach(‘aa.xml’) do |line|
x = … line …
puts x if unique.add? x
end
Of course you can also use a Hash for this.
unique = {}
File.foreach(‘aa.xml’) do |line|
x = … line …
unique.fetch x do
unique[x] = true
puts x
end
end
Btw, since your input appears to be XML it’s probably a better idea to
process it with XML tools like REXML and the like.
Kind regards
robert
Robert K. wrote:
require ‘set’
unique = Set.new
File.foreach(‘aa.xml’) do |line|
x = … line …
puts x if unique.add? x
end
That’s fine for the plodding proles, but we cossacks always shout the
battle-cry: “We don’t need no stinkin’ loops!”
puts IO.readlines(‘aa.xml’).map{|s| s.sub( … )}.uniq
Everything must be done in one fell swoop or not at all!
On 20.12.2009 15:40, W. James wrote:
That’s fine for the plodding proles, but we cossacks always shout the
battle-cry: “We don’t need no stinkin’ loops!”
puts IO.readlines(‘aa.xml’).map{|s| s.sub( … )}.uniq
Everything must be done in one fell swoop or not at all!
Strong words, but I hope you are aware that this, taken as a general
rule, is bad advice.
Cheers
robert
Robert K. wrote:
On 20.12.2009 15:40, W. James wrote:
That’s fine for the plodding proles, but we cossacks always shout the
battle-cry: “We don’t need no stinkin’ loops!”
puts IO.readlines(‘aa.xml’).map{|s| s.sub( … )}.uniq
Everything must be done in one fell swoop or not at all!
Strong words, but I hope you are aware that this, taken as a general
rule, is bad advice.
@geekdom = {@everything.reject {|e| !e.fell_swoop?}}.good_advice? ?
:alive : :dead
![:slight_smile: :slight_smile:](https://www.ruby-forum.com/images/emoji/apple/slight_smile.png?v=12)
Cheers
robert
Best,
–Â
Marnen Laibow-Koser
http://www.marnen.org
[email protected]Â