Skip to content
Advertisement

Linux split a file in two columns

I have the following file that contains 2 columns :

A:B:IP:80                  apples    
C:D:IP2:82                 oranges    
E:F:IP3:84                 grapes

How is possible to split the file in 2 other files, each column in a file like this:

File1

A:B:IP:80    
C:D:IP2:82    
E:F:IP3:84

File2

apples
oranges
grapes

Advertisement

Answer

Perl 1-liner using (abusing) the fact that print goes to STDOUT, i.e. file descriptor 1, and warn goes to STDERR, i.e. file descriptor 2:

 # perl -n means loop over the lines of input automatically
 # perl -e means execute the following code
 # chomp means remove the trailing newline from the expression

 perl -ne 'chomp(my @cols = split /s+/); # Split each line on whitespace
           print $cols[0] . "n";
           warn  $cols[1] . "n"' <input 1>col1 2>col2

You could, of course, just use cut -b with the appropriate columns, but then you would need to read the file twice.

User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement