unix_utils 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +10 -0
- data/lib/unix_utils.rb +5 -4
- data/lib/unix_utils/version.rb +1 -1
- data/test/regression/test_sed_large_file.rb +32 -0
- metadata +6 -4
data/History.txt
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
== 0.0.5 / 2012-03-21
|
2
|
+
|
3
|
+
* Enhancements
|
4
|
+
|
5
|
+
* Change pipe buffer size to 64kb (it was 4mb before), which seems to make everything run faster
|
6
|
+
|
7
|
+
* Bug fixes
|
8
|
+
|
9
|
+
* Thanks to @leomao10, make sed work more reliably on large files by using its input-file argument rather than piping in data
|
10
|
+
|
1
11
|
== 0.0.4 / 2012-03-19
|
2
12
|
|
3
13
|
* Bug fixes
|
data/lib/unix_utils.rb
CHANGED
@@ -8,7 +8,7 @@ require "unix_utils/version"
|
|
8
8
|
|
9
9
|
module UnixUtils
|
10
10
|
|
11
|
-
BUFSIZE =
|
11
|
+
BUFSIZE = 2**16
|
12
12
|
|
13
13
|
def self.curl(url, form_data = nil)
|
14
14
|
outfile = tmp_path url
|
@@ -192,12 +192,13 @@ module UnixUtils
|
|
192
192
|
end
|
193
193
|
end
|
194
194
|
|
195
|
+
# POSIX sed, whether it's provided by sed or gsed
|
195
196
|
def self.sed(infile, *expr)
|
196
197
|
infile = ::File.expand_path infile
|
197
198
|
outfile = tmp_path infile
|
198
|
-
bin = available?('
|
199
|
-
argv = [ bin, expr.map { |e| ['-e', e] } ].flatten
|
200
|
-
spawn argv, :
|
199
|
+
bin = available?('sed') ? 'sed' : ['gsed', '--posix']
|
200
|
+
argv = [ bin, expr.map { |e| ['-e', e] }, infile ].flatten
|
201
|
+
spawn argv, :write_to => outfile
|
201
202
|
outfile
|
202
203
|
end
|
203
204
|
|
data/lib/unix_utils/version.rb
CHANGED
@@ -0,0 +1,32 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'helper'
|
3
|
+
require 'tempfile'
|
4
|
+
|
5
|
+
describe "handle large file with sed" do
|
6
|
+
let(:normal_line_no) { 124000 }
|
7
|
+
let(:invalid_line_no) { 10 }
|
8
|
+
let(:input_file) { Tempfile.open('test', '/tmp') }
|
9
|
+
|
10
|
+
before do
|
11
|
+
begin
|
12
|
+
(1..normal_line_no).each do |i|
|
13
|
+
input_file.puts "\"psmith01\",\"CLASS2B\",\"Peter Smith 1\",\"YEAR2\",\"1\",\"N\",\"ADVANCED\",\"STAFF\",\"1\",\"Y\",\"Y\",\"psmith01\",\"CLASS2B\",\"Peter Smith 1\",\"YEAR2\",\"1\",\"N\",\"ADVANCED\",\"STAFF\",\"1\",\"Y\",\"Y\",\"psmith01\",\"CLASS2B\",\"Peter Smith 1\",\"YEAR2\",\"1\",\"N\",\"ADVANCED\",\"STAFF\",\"1\",\"Y\",\"Y\",\"psmith01\",\"CLASS2B\",\"Peter Smith 1\",\"YEAR2\",\"1\",\"N\",\"ADVANCED\",\"STAFF\",\"1\",\"Y\",\"Y\""
|
14
|
+
end
|
15
|
+
(1..invalid_line_no).each do |i|
|
16
|
+
input_file.puts "@!!@"
|
17
|
+
end
|
18
|
+
input_file.flush
|
19
|
+
ensure
|
20
|
+
input_file.close
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should have 124000 lines in output file" do
|
25
|
+
output_path = UnixUtils.sed(input_file.path, ':a', "1,#{invalid_line_no}!{P;N;D;};N;ba")
|
26
|
+
UnixUtils.wc(output_path).first.must_equal normal_line_no
|
27
|
+
end
|
28
|
+
|
29
|
+
after do
|
30
|
+
input_file.unlink
|
31
|
+
end
|
32
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unix_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-03-
|
12
|
+
date: 2012-03-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: posix-spawn
|
16
|
-
requirement: &
|
16
|
+
requirement: &2154458300 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2154458300
|
25
25
|
description: Like FileUtils, but provides zip, unzip, bzip2, bunzip2, tar, untar,
|
26
26
|
sed, du, md5sum, shasum, cut, head, tail, wc, unix2dos, dos2unix, iconv, curl, perl,
|
27
27
|
etc.
|
@@ -39,6 +39,7 @@ files:
|
|
39
39
|
- lib/unix_utils.rb
|
40
40
|
- lib/unix_utils/version.rb
|
41
41
|
- test/helper.rb
|
42
|
+
- test/regression/test_sed_large_file.rb
|
42
43
|
- test/target/directory-really-a-t_a_r-shh
|
43
44
|
- test/target/directory-really-a-z_i_p-shh
|
44
45
|
- test/target/directory.tar
|
@@ -84,6 +85,7 @@ summary: Like FileUtils, but provides zip, unzip, bzip2, bunzip2, tar, untar, se
|
|
84
85
|
etc.
|
85
86
|
test_files:
|
86
87
|
- test/helper.rb
|
88
|
+
- test/regression/test_sed_large_file.rb
|
87
89
|
- test/target/directory-really-a-t_a_r-shh
|
88
90
|
- test/target/directory-really-a-z_i_p-shh
|
89
91
|
- test/target/directory.tar
|