Need to convert a pipe delimited text file to tab delimited


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Need to convert a pipe delimited text file to tab delimited
# 1  
Old 04-05-2015
Need to convert a pipe delimited text file to tab delimited

Hi, I have a rquirement in unix as below .

I have a text file with me seperated by | symbol and i need to generate a excel file through unix commands/script so that each value will go to each column.

ex:
Input Text file:
Code:
1|A|apple
2|B|bottle

excel file to be generated as output as below
Code:
1 A apple 
2 B bottle


Last edited by Don Cragun; 04-05-2015 at 02:26 AM.. Reason: Add CODE tags and change font and size tags to CODE tags.
# 2  
Old 04-05-2015
Is there some reason why you can't just use excel to load this file as it is now using excel's import command to load a CSV file with delimiter |?
# 3  
Old 04-05-2015
Longhand using builtins only to show that it can be done, (there are much better methods), using OSX 10.7.5, default bash terminal:-
Code:
#!/bin/bash
# tab.sh
> /tmp/txt
> /tmp/text
echo "1|A|apple|A|apple
2|B|bottle|A|apple
2|B|bottle
1|A|apple
2|B|bottle
" > /tmp/txt
text=$(cat /tmp/txt)
echo "$text"
# Working part start.
count=0
while [ $count -lt ${#text} ]
do
	if [ "${text:$count:1}" = "|" ]
	then
		printf "	" >> /tmp/text
	else
		printf "${text:$count:1}" >> /tmp/text
	fi
	count=$((count+1))
done
# Replace the final newline.
echo "" >> /tmp/text
# Working part end.
cat /tmp/text
hexdump -C /tmp/text
exit 0

Results:-
Code:
Last login: Sun Apr  5 16:00:45 on ttys000
AMIGA:barrywalker~> cd Desktop/Code/Shell
AMIGA:barrywalker~/Desktop/Code/Shell> chmod 755 tab.sh
AMIGA:barrywalker~/Desktop/Code/Shell> ./tab.sh
1|A|apple|A|apple
2|B|bottle|A|apple
2|B|bottle
1|A|apple
2|B|bottle
1	A	apple	A	apple
2	B	bottle	A	apple
2	B	bottle
1	A	apple
2	B	bottle
00000000  31 09 41 09 61 70 70 6c  65 09 41 09 61 70 70 6c  |1.A.apple.A.appl|
00000010  65 0a 32 09 42 09 62 6f  74 74 6c 65 09 41 09 61  |e.2.B.bottle.A.a|
00000020  70 70 6c 65 0a 32 09 42  09 62 6f 74 74 6c 65 0a  |pple.2.B.bottle.|
00000030  31 09 41 09 61 70 70 6c  65 0a 32 09 42 09 62 6f  |1.A.apple.2.B.bo|
00000040  74 74 6c 65 0a                                    |ttle.|
00000045
AMIGA:barrywalker~/Desktop/Code/Shell> _

IMPORTANT NOTE: You have asked for TAB delimiters but have shown SPACE delimiters so be aware that this is TAB not SPACE! Hence the hexdump.
Also trailing newlines can be a problem but not in this particular case...

EDIT:
What have you attempted so far?
Also there are only nelines are carriage returns needed with the newlines too?

Last edited by wisecracker; 04-05-2015 at 01:38 PM.. Reason: See above...
# 4  
Old 04-05-2015
Hi wisecracker.

You lost me. There is nothing in post #1 in this thread that talks about converting | characters to tabs. That is much more easily done by the simple command:
Code:
tr '|' '\t'

What was requested was a way to convert a text file into a Microsoft Excel spreadsheet (presumably .xls, .xlsx, .xlsm, .xlsb, or .xlx) format (all of which are proprietary Microsoft binary formats). I know that some versions of perl are able to do with when certain plugins are available, but converting a pipe symbol separated values file into a tab separated values file does not seem to make any progress towards the request stated in post #1 in this thread. Am I missing something?
# 5  
Old 04-05-2015
hi As per my requirement i can change the input delimeter to comma "," instead of pipe symbol "|" in the input. I am using the below command to convert the unix file to a excel file but what happening is entire row 1 data is moving to single column in excel sheet . but i want in seperate columns based on the delimiter

cp /tmp/test.txt /tmp/output.xls
# 6  
Old 04-05-2015
Copying a text file that is not in the proprietary Microsoft binary format expected by excel when it reads a file with the .xls extension obviously does not work (as you have already found).

Did you try what I suggested in post #2 in this thread?
# 7  
Old 04-05-2015
We dont want to do any manual intervention by importing to excel and reformatting it. This was a requirement as part of automation where we are trying below:
1. run a sql query it will be done through unix and out put can be created in txt or xls format.
2. get that data formatted on an excel with seperate columns and mail to user

Can you help me out on this
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Convert pipe demilited file to vertical tab delimited

Hi All, How can we convert pipe delimited ( or comma ) file to vertical tab (VT) delimited. Regards PK (4 Replies)
Discussion started by: prasson_ibm
4 Replies

2. UNIX for Beginners Questions & Answers

Convert Excel File (xls) to tab delimited text file on AIX

Hi i have a problem in my job i try to convert an excel file (xls extention) to text file (tab delimited), but no result with this comand cat xxx.xls > xxx.txt Do you have eny idea? PS: sorry for my english Thanks!! (4 Replies)
Discussion started by: frisso
4 Replies

3. Shell Programming and Scripting

Convert a 3 column tab delimited file to a matrix

Hi all, I have a 3 columns input file like this: CPLX9PC-4943 CPLX9PC-4943 1 CPLX9PC-4943 CpxID123 0 CPLX9PC-4943 CpxID126 0 CPLX9PC-4943 CPLX9PC-5763 0.5 CPLX9PC-4943 CpxID13 0 CPLX9PC-4943 CPLX9PC-6163 0 CPLX9PC-4943 CPLX9PC-6164 0.04... (7 Replies)
Discussion started by: AshwaniSharma09
7 Replies

4. Shell Programming and Scripting

How to make tab delimited file to space delimited?

Hi How to make tab delimited file to space delimited? in put file: ABC kgy jkh ghj ash kjl o/p file: ABC kgy jkh ghj ash kjl Use code tags, thanks. (1 Reply)
Discussion started by: jagdishrout
1 Replies

5. Shell Programming and Scripting

how to convert comma delimited file to tab separator

Hi all, How can i convert comma delimited .csv file to tab separate using sed command or script. Thanks, Krupa (4 Replies)
Discussion started by: krupasindhu18
4 Replies

6. Shell Programming and Scripting

Help with converting Pipe delimited file to Tab Delimited

I have a file which was pipe delimited, I need to make it tab delimited. I tried with sed but no use cat file | sed 's/|//t/g' The above command substituted "/t" not tab in the place of pipe. Sample file: abc|123|2012-01-30|2012-04-28|xyz have to convert to: abc 123... (6 Replies)
Discussion started by: karumudi7
6 Replies

7. Shell Programming and Scripting

How to convert a space delimited file into a pipe delimited file using shellscript?

Hi All, I have space delimited file similar to the one as shown below.. I need to convert it as a pipe delimited, the values inside the pipe delimited file should be as highlighted... AA ATIU2345098809 009697 005374 BB ATIU2345097809 005445 006518 CC ATIU9685098809 003215 003571 DD... (7 Replies)
Discussion started by: nithins007
7 Replies

8. UNIX for Dummies Questions & Answers

How to convert a text file into tab delimited format?

I have a text file that made using text editor in Ubuntu. However the text file is not being recognized as space or tab delimited, the formatting seems to be messed up. How can I convert the text file into tab delimited format? (3 Replies)
Discussion started by: evelibertine
3 Replies

9. UNIX for Dummies Questions & Answers

How to convert text to columns in tab delimited text file

Hello Gurus, I have a text file containing nearly 12,000 tab delimited characters with 4000 rows. If the file size is small, excel can convert the text into coloumns. However, the file that I have is very big. Can some body help me in solving this problem? The input file example, ... (6 Replies)
Discussion started by: Unilearn
6 Replies

10. Shell Programming and Scripting

convert a pipe delimited file to a':" delimited file

i have a file whose data is like this:: osr_pe_assign|-120|wg000d@att.com|4| osr_evt|-21|wg000d@att.com|4| pe_avail|-21|wg000d@att.com|4| osr_svt|-11|wg000d@att.com|4| pe_mop|-13|wg000d@att.com|4| instar_ready|-35|wg000d@att.com|4| nsdnet_ready|-90|wg000d@att.com|4|... (6 Replies)
Discussion started by: priyanka3006
6 Replies
Login or Register to Ask a Question