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.
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)
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)
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)
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)
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)
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)
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)
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)
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
LEARN ABOUT REDHAT
expand
EXPAND(1) FSF EXPAND(1)NAME
expand - convert tabs to spaces
SYNOPSIS
expand [OPTION]... [FILE]...
DESCRIPTION
Convert tabs in each FILE to spaces, writing to standard output. With no FILE, or when FILE is -, read standard input.
Mandatory arguments to long options are mandatory for short options too.
-i, --initial
do not convert TABs after non whitespace
-t, --tabs=NUMBER
have tabs NUMBER characters apart, not 8
-t, --tabs=LIST
use comma separated list of explicit tab positions
--help display this help and exit
--version
output version information and exit
AUTHOR
Written by David MacKenzie.
REPORTING BUGS
Report bugs to <bug-coreutils@gnu.org>.
COPYRIGHT
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICU-
LAR PURPOSE.
SEE ALSO
The full documentation for expand is maintained as a Texinfo manual. If the info and expand programs are properly installed at your site,
the command
info expand
should give you access to the complete manual.
expand (coreutils) 4.5.3 February 2003 EXPAND(1)