How can I format a text file into uniform columns?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How can I format a text file into uniform columns?
# 8  
Old 04-26-2012
Hi Try this Smilie
Code:
sed -e 's/\s\s*/\t/g' filename

# 9  
Old 04-26-2012
use printf in awk to make an aligned table, but for this you should have your data to be space delimited or comma delimited uniformly throughout your input.

Code:
awk -F"," '{ printf "%-10s %-10s %-10s %-10s %-10s %-10s\n", $1, $2 , $3 ,$4, $5, $6 }' file_name

# 10  
Old 04-26-2012
Quote:
Originally Posted by bigbuk
Thanks for taking the time to look at this guys. Unfortunately I don't have the "util" package ygemici and I don't have any perl skills drl ! I tried running your perl script but got errors and don't have the knowledge to interpret them. I was hoping for a standard unix scripting solution but again - I do appreciate your times ! Thanks.
try this
Code:
# awk '{for(i=1;i<NF-3;i++)printf "%-10s%-10s%c",$i,$++i," ";printf "%+15s%5s%5s\n",$(NF-2),$(NF-1),$NF}' infile

# 11  
Old 04-26-2012
Hi.

Here is an approach using standard utility expand:
Code:
#!/usr/bin/env bash

# @(#) s2	Demonstrate preparing and aligning text fields, sed, expand.

pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
db() { ( printf " db, ";for _i;do printf "%s" "$_i";done;printf "\n" ) >&2 ; }
db() { : ; }
C=$HOME/bin/context && [ -f $C ] && $C sed expand

FILE=${1-data1}
pl " Input file $FILE:"
cat -A $FILE

pl " Results of expand:"
sed 's/   */\t/g' $FILE |
expand -t '20,30,50' |
tee f1

pl " Displaying special characters (if any) in output:"
cat -A f1

exit 0

producing:
Code:
% ./s2

Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
OS, ker|rel, machine: Linux, 2.6.26-2-amd64, x86_64
Distribution        : Debian GNU/Linux 5.0.8 (lenny) 
bash GNU bash 3.2.39
sed GNU sed version 4.1.5
expand (GNU coreutils) 6.10

-----
 Input file data1:
Charles Dixon  Age 23       Hometown Darlington  Postcode DL1 2DC$
Fred Bixton  Age 34  Hometown Leeds     Postcode LS1 5XS$
Jim Davis            Age 48      Hometown Cardiff  CF2 8YY$

-----
 Results of expand:
Charles Dixon       Age 23    Hometown Darlington Postcode DL1 2DC
Fred Bixton         Age 34    Hometown Leeds      Postcode LS1 5XS
Jim Davis           Age 48    Hometown Cardiff    CF2 8YY

-----
 Displaying special characters (if any) in output:
Charles Dixon       Age 23    Hometown Darlington Postcode DL1 2DC$
Fred Bixton         Age 34    Hometown Leeds      Postcode LS1 5XS$
Jim Davis           Age 48    Hometown Cardiff    CF2 8YY$

This uses the same idea of transforming runs of spaces into TABs, then do the expand.

Obviously, this is not automatic, but it seems easier than awk-printf. You do not however, get the flexibility of right-left-center justification.

Best wishes ... cheers, drl
# 12  
Old 05-01-2012
Thanks for all the replies guys. The closest I get to work on the actual (real) file I am using is ygemici's suggestion.

The actual file I am using looks like :
Code:
CCEBP2Cluster-MQ-Listener-PNGWSC46 State            s2wsc4     ONLINE
CCEBP2Cluster-MQ-Listener-PNGWSC56 State            s2wsc4     ONLINE
CCEBP2Cluster-MQ-QMGR-PNGWSC46 State                    s2wsc4     ONLINE
CCEBP2Cluster-MQ-QMGR-PNGWSC56 State                    s2wsc4     ONLINE
CCEBP2Cluster-WAS-cebgr1-jvm-61n-prodc-c-1 State                s2wsc4     ONLINE
CCEBP2Cluster-WAS-cebgr1-jvm-61n-prodc-c-2 State                s2wsc4     ONLINE
CCEBP2Cluster-WAS-cebss-jvm-61n-prodc-c-1 State                s2wsc4     ONLINE
CCEBP2Cluster-WAS-cebss-jvm-61n-prodc-c-2 State                s2wsc4     ONLINE
CCEBP2Cluster-WAS-ew-jvm-61n-prodc-c-1 State                s2wsc4     ONLINE
CCEBP2Cluster-WAS-ew-jvm-61n-prodc-c-2 State                s2wsc4     ONLINE
CCEBP2Cluster-WAS-node-61n-prodc-c-1 State                s2wsc4     ONLINE
CCEBP2Cluster-WAS-node-61n-prodc-c-3 State                s2wsc4     ONLINE
CCEBP2ClusterApp-z-wpcp22-Patrolagent State            s2wsc4     ONLINE
CCEBP2ClusterDiskGroup State               s2wsc4     ONLINE
CCEBP2ClusterIPAddressProxy State            s2wsc4     ONLINE
CCEBP2ClusterMount-z-wpcp22-01 State              s2wsc4     ONLINE
CCEBP2ClusterZone-z-wpcp22 State               s2wsc4     ONLINE

After running :
Code:
awk -F"," '{ printf "%-10s %-10s %-10s %-10s %-10s %-10s\n", $1, $2 , $3 ,$4, $5, $6 }' filename

I get this file concatenated together :
Code:
CCEBP2Cluster-MQ-Listener-PNGWSC46States2wsc4
CCEBP2Cluster-MQ-Listener-PNGWSC56States2wsc4
CCEBP2Cluster-MQ-QMGR-PNGWSC46States2wsc4
CCEBP2Cluster-MQ-QMGR-PNGWSC56States2wsc4
CCEBP2Cluster-WAS-cebgr1-jvm-61n-prodc-c-1States2wsc4
CCEBP2Cluster-WAS-cebgr1-jvm-61n-prodc-c-2States2wsc4
CCEBP2Cluster-WAS-cebss-jvm-61n-prodc-c-1States2wsc4
CCEBP2Cluster-WAS-cebss-jvm-61n-prodc-c-2States2wsc4
CCEBP2Cluster-WAS-ew-jvm-61n-prodc-c-1States2wsc4
CCEBP2Cluster-WAS-ew-jvm-61n-prodc-c-2States2wsc4
CCEBP2Cluster-WAS-node-61n-prodc-c-1States2wsc4
CCEBP2Cluster-WAS-node-61n-prodc-c-3States2wsc4
CCEBP2ClusterApp-z-wpcp22-PatrolagentStates2wsc4
CCEBP2ClusterDiskGroupStates2wsc4
CCEBP2ClusterIPAddressProxyStates2wsc4
CCEBP2ClusterMount-z-wpcp22-01States2wsc4
CCEBP2ClusterZone-z-wpcp22States2wsc4

What I was hoping for was the file tabulated into neat columns (probably using the spaces as delimiters)

---------- Post updated at 07:48 AM ---------- Previous update was at 07:45 AM ----------

*NOTE* on my last post - the file I am using as input has staggered rows with spaces in between - NOT concateneated as has appeared in the paste above - sorry! But the output is concatenated as I said.

Last edited by Franklin52; 05-01-2012 at 10:23 AM.. Reason: Please use code tags
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Format text file to html

Hi Experts, Anybody out there figure out on how to achieve in shell scripts or tools. I have done googling to find solutions but no luck. I have thousands of .txt files to batch process, please see the below sample text content after -------- start here --------. What I want to achieve is to... (10 Replies)
Discussion started by: lxdorney
10 Replies

2. Shell Programming and Scripting

How to concatenate 2-columns by 2 -columns for a text file?

Hello, I want to concatenate 2-columns by 2-columns separated by colon. How can I do so? For example, I have a text file containing 6 columns separated by tab. I want to concatenate column 1 and 2; column 3 and 4; column 5 and 6, respectively, and put a colon in between. input file: 1 0 0 1... (10 Replies)
Discussion started by: huiyee1
10 Replies

3. UNIX for Dummies Questions & Answers

Removing columns from a text file that do not have any values in second and third columns

I have a text file that has three columns. But at the end of the text file, there are trailing lines that have missing second and third columns: 4 0.04972604 KLHL28 4 0.0497332 CSTB 4 0.04979822 AIF1 4 0.04983331 DECR2 4 0.04990344 KATNB1 4 4 4 4 How can I remove the trailing... (3 Replies)
Discussion started by: evelibertine
3 Replies

4. Shell Programming and Scripting

Conversion of spaces Text file into CSV format file

Input file (each line is separaed by spaces )given below: Name Domain Contact Phone Email Location ----------------------- ------------------------------------------------ ------- -----... (18 Replies)
Discussion started by: sreenath1037
18 Replies

5. 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

6. Shell Programming and Scripting

format text file

i have a text file in this format: name1^A1^B1^ name2^A2^B2^ ... namex^Ax^Bx^ name1^AA1^ name2^AA2^ ... namex^AAx^ name1^AAA1^BBB1^ name2^AAA1^BBB2^ ... namex^AAAx^BBBx^ name1^AAAA1^ name2^AAAA2^ ... namex^AAAAx^ i want to generate a file: (2 Replies)
Discussion started by: busystock
2 Replies

7. Shell Programming and Scripting

Uniform length for all the lines in file

Hi, I have a file with different width for each line. like first line with 45characters and second line of 30 characters. But I want to make all the lines to 45 characters in file. Appreciate your inputs Thanks Arun: (1 Reply)
Discussion started by: arund_01
1 Replies

8. Shell Programming and Scripting

Changing the text file format

Hi, I have a shell script to unload all the empname who have salary >50000 from the emp table into a text file(empname.txt) . m_db unload "$dbc_file" -column_delimiter ',' -select "SELECT empname FROM emp where salary > 50000" >> empname.txt Now my text file have data in the following format ... (3 Replies)
Discussion started by: kavithakuttyk
3 Replies

9. Shell Programming and Scripting

Format a text file

I have a file that gets created by pasting 3 files together to get the one file. The output of the 3 files follows. sft.rtf c3_critappdb_u5 start 04:22:20 end 08:03:41 c3_critappdb_u6 start 18:01:31 end 20:21:19 c3_critappdb_u7 start 00:02:50 end 08:30:17 c3_critappdb_u8 start 17:00:42 end... (2 Replies)
Discussion started by: jhardy
2 Replies

10. Shell Programming and Scripting

use of format file to extract columns from a source file

hi experts lets say my format file is B B ========= column no,name,type,length 1,ee,N,12 3,hj,N.4 4,kl,N,5 source file ======== d e f g h i 5 8 9 7 6 5 1 3 4 5 6 6 (2 Replies)
Discussion started by: subhendu81
2 Replies
Login or Register to Ask a Question