# Basic question

**URL:** <https://www.ruby-forum.com/t/basic-question/85357>\
**Category:** Ruby\
**Created:** [March 22, 2006, 4:59pm UTC](https://www.ruby-forum.com/t/basic-question/85357 "2006-03-22T16:59:05Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [March 22, 2006, 4:59pm UTC](https://www.ruby-forum.com/t/basic-question/85357/1 "2006-03-22T16:59:05Z")

</div>

Hello,

Suppose “OOO.csv” is a data file with 9 columns, and I want to create a  
new file that is consisted of 2nd, 5th, and 7th columns of the OOO.csv  
(i.e., subset of the original), how do I do this?

Thanks.

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [March 22, 2006, 5:03pm UTC](https://www.ruby-forum.com/t/basic-question/85357/2 "2006-03-22T17:03:47Z")

</div>

Hi

Iterate over OOO.csv’s lines, split each line as you wish (probably  
using slice notation is the easiest for fixed length columns), and  
writing each slice into the desired destination file.

Regards,  
Alder

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [March 22, 2006, 5:04pm UTC](https://www.ruby-forum.com/t/basic-question/85357/3 "2006-03-22T17:04:18Z")

</div>

This is a Ruby and not a Basic group.

removed\_email\_address@domain.invalid wrote:

> Suppose “OOO.csv” is a data file with 9 columns, and I want to create a  
> new file that is consisted of 2nd, 5th, and 7th columns of the OOO.csv  
> (i.e., subset of the original), how do I do this?

Use CSV for parsing and writing:

[http://www.ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html](http://www.ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html)

Kind regards

```
robert

```

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [March 22, 2006, 5:16pm UTC](https://www.ruby-forum.com/t/basic-question/85357/4 "2006-03-22T17:16:18Z")

</div>

On Mar 22, 2006, at 9:58 AM, removed\_email\_address@domain.invalid wrote:

> Hello,
> 
> Suppose “OOO.csv” is a data file with 9 columns, and I want to  
> create a  
> new file that is consisted of 2nd, 5th, and 7th columns of the OOO.csv  
> (i.e., subset of the original), how do I do this?

My suggestion, if you don’t mind using a non-standard library:

Neo:~/Desktop$ ls  
000.csv trim\_columns.rb  
Neo:~/Desktop$ cat 000.csv  
1,2,3,4,5,6,7,8,9  
a,b,c,d,e,f,g,h,i  
Neo:~/Desktop$ ruby -rubygems trim\_columns.rb 000.csv  
2,5,7  
b,e,g  
Neo:~/Desktop$ cat trim\_columns.rb  
#!/usr/local/bin/ruby -w

require “faster\_csv”

FasterCSV.filter { |row| row.replace(row.values\_at(1, 4, 6)) }

**END**

Hope that helps.

James Edward G. II
