Having trouble with bash syntax logic

For discussions about programming, programming questions/advice, and projects that don't really have anything to do with Puppy.
Post Reply
Message
Author
acampbe2
Posts: 2
Joined: Tue 12 Jun 2012, 02:28

Having trouble with bash syntax logic

#1 Post by acampbe2 »

0 down vote favorite
share [g+] share [fb] share [tw]


I need help reading a txt file line by line, and then looping through each element in bash script. After hitting a element I need to cut the # of the column represented by the current numerical element, and then assign it to a file. In the end I need to paste all these files together. The columns are in a separate file. The first txt file reads as such

1,6,62,6

7,7,52,24

3,145,25,69

Then for example I need to cut column 5 in a separate file, and then assign to a new file. One the line is done the process starts again.This process would be easy in python or java, but I'm just very new to bash script.

This is a sample column:

1:45

1:56

1:56

1:69

ccData_t.nnv
while read line; do
cut -f2 ccData_t.nnv >p
for i in $(line);

do

cut -fi+1 ccData_t.nnv |sed "s/^/"i":/" >ti
echo paste p t1 t2 t3 t4 |grep -v pro >svm_train_model1.tsv
done < FILE

In the end I have to have all columns appended together as such.

1:45 6:45 62:45

1:56 6:34 62:23

1:56 6:32 62:52

1:69 6:12 62:123

disciple
Posts: 6984
Joined: Sun 21 May 2006, 01:46
Location: Auckland, New Zealand

#2 Post by disciple »

I see you have another thread:
http://www.murga-linux.com/puppy/viewtopic.php?t=78947

Or is this a howto after all?
If it isn't, it isn't immediately obvious exactly what you're asking for help with. Could you clarify?
Do you know a good gtkdialog program? Please post a link here

Classic Puppy quotes

ROOT FOREVER
GTK2 FOREVER

User avatar
Flash
Official Dog Handler
Posts: 13071
Joined: Wed 04 May 2005, 16:04
Location: Arizona USA

#3 Post by Flash »

It looks to me like acampbe2 copied that from another forum and pasted it in this forum. He even left some junk from the other forum at the top.

User avatar
sunburnt
Posts: 5090
Joined: Wed 08 Jun 2005, 23:11
Location: Arizona, U.S.A.

#4 Post by sunburnt »

Hi acampbe2;

Code: Select all

for L in `cat File.txt`
do
( Do what you need to...)
done

paste File-1.txt File-2.txt > Final-File.txt

User avatar
Karl Godt
Posts: 4199
Joined: Sun 20 Jun 2010, 13:52
Location: Kiel,Germany

#5 Post by Karl Godt »

Your problem is probably that column 5 is not always there :

1,6,62,6 has 4 columns ...


while read line;do
column_5=`echo "$line" |cut -f 5 -d ','`
if [ "$column_5" = '' ];then
column_5='0'
fi
done <FILE

Code: Select all

echo "
1,2,3,4
2,3,4,1,
4,3,2,1,,
5,4,3,2,1
" >test_file.lst

while read line;do [ "$line" ] || continue;column_5=`echo "$line" | cut -f 5 -d ','`; [ "$column_5" ] || column_5=0; echo "$line | $column_5"; done <test_file.lst
1,2,3,4 | 0
2,3,4,1, | 0
4,3,2,1,, | 0
5,4,3,2,1 | 1

User avatar
Moose On The Loose
Posts: 965
Joined: Thu 24 Feb 2011, 14:54

#6 Post by Moose On The Loose »

I edited the Karl Godt comment a little:
Karl Godt wrote:Your problem is probably that column 5 is not always there :

1,6,62,6 has 4 columns ...

Code: Select all

while read line;do
column_5=`echo "$line" |cut -f 5 -d ','`
if [ "$column_5" = '' ];then
column_5='0'
fi
done <FILE
There is a slightly easier way to deal with the issue of too few columns.

Code: Select all

column_5=`echo "${line},0,0,0,0,0,0,0" |cut -f 5 -d ','`
This way cut always has the needed column.

User avatar
Karl Godt
Posts: 4199
Joined: Sun 20 Jun 2010, 13:52
Location: Kiel,Germany

#7 Post by Karl Godt »

Moose On The Loose wrote:I edited the Karl Godt comment a little:
Karl Godt wrote:Your problem is probably that column 5 is not always there :

1,6,62,6 has 4 columns ...

Code: Select all

while read line;do
column_5=`echo "$line" |cut -f 5 -d ','`
if [ "$column_5" = '' ];then
column_5='0'
fi
done <FILE
There is a slightly easier way to deal with the issue of too few columns.




Code: Select all

column_5=`echo "${line},0,0,0,0,0,0,0" |cut -f 5 -d ','`
This way cut always has the needed column.
But watch out $line has an entry. If $line would be NULL , then cut and gawk -F "," would treat ",1,2,3,4,5" differently . Field 1 would be NULL then and field 5 would get the value '4' .

Post Reply