I’m trying to write a script that reads the file content below and extract the value in the 6th column of each line, then print each line without the 6th column. The comma is used as the delimiter.
Input:
123,456,789,101,145,5671,hello world,goodbye for now
223,456,789,101,145,5672,hello world,goodbye for now
323,456,789,101,145,5673,hello world,goodbye for now
What I did was
#!/bin/bash
for i in `cat test_input.txt`
do
COLUMN=`echo $i | cut -f6 -d','`
echo $i | cut -f1-5,7- -d',' >> test_$COLUMN.txt
done
The output I got was
test_5671.txt:
123,456,789,101,145,hello
test_5672.txt:
223,456,789,101,145,hello
test_5673.txt:
323,456,789,101,145,hello
The rest of “world, goodbye for now” was not written into the output files, because it seems like the space between “hello” and “world” was used as a delimiter?
How do I get the correct output
123,456,789,101,145,hello world,goodbye for now
It’s not a problem with the cut command but with the for loop you’re using. For the first loop run the variable i will only contain
123,456,789,101,145,5671,hello.If you insist to read the input file line-by-line (not very efficient), you’d better use a read-loop like this: