Help with re-organize data by adding "-" in empty place

Input file

data_1 data_2 A B C
data_1 data_2   B D
data_1 data_2 A   C
data_1 data_2 A 
data_1 data_2   B C
data_1 data_2     C
data_1 data_2 A B
data_1 data_2   
data_1 data_2 C B A
.
.

Output file

data_1 data_2 A B C
data_1 data_2 - B D
data_1 data_2 A - C
data_1 data_2 A - -
data_1 data_2 - B C
data_1 data_2 - - C
data_1 data_2 A B -
data_1 data_2 - - -  
data_1 data_2 C B A

My input data have 5 column. However some of the line might missing the content in column 3, column 4, or column 5 randomly.
My purpose is filled up all those empty content with "-"
I got try to use awk with the if else condition.
Unfortunately, it can't work.
Thanks for any advice

Hi,
Try this code,

#! /usr/local/bin/perl

open(FILE,"<File1") or die "Unable to open file";

while ( <FILE> )
{
   my $mLine = $_;
   $mLine =~ s/\s/-/g;
   print "$mLine\n";

Here File1 is input file.

Cheers,
Ranga:)

1 Like

# while loop is not closed.
# file is not closed
# and this code will replace all the space to - (hypen)

---------- Post updated at 12:40 PM ---------- Previous update was at 12:34 PM ----------

 
$ cat test
data_1 data_2 A B C
data_1 data_2   B D
data_1 data_2 A   C
data_1 data_2 A    
data_1 data_2   B C
data_1 data_2     C
data_1 data_2 A B  
data_1 data_2      
data_1 data_2 C B A
 
 
$ perl -lane '$_ =~ s/\s\s/ -/g;print $_;' test 
data_1 data_2 A B C
data_1 data_2 - B D
data_1 data_2 A - C
data_1 data_2 A - -
data_1 data_2 - B C
data_1 data_2 - - C
data_1 data_2 A B -
data_1 data_2 - - -
data_1 data_2 C B A
 
1 Like
awk '{gsub(/  /," -"); if(NF==3){$3=$3" - -"} if(NF==4)$4=$4" -"  }1' infput_file

Considering it will have only 5 data fields

--ahamed