c=1
for f in `cat tmp.file`; do
if [ $(($c % 15)) -ne 0 ]; then
printf "$f "
else
echo
fi
c=$((c + 1))
done
This is a combo useless use of cat and useless use of backticks. Loading an entire file into a variable to chop it like this is especially dangerous since, if the file is larger than the maximum size of a shell variable, the end will get chopped off.
You shouldn't feed variables into printf's command string unless you can control exactly what they are. It will throw up on or mangle anything with % or \ in it.
It ignores every fifteenth cell.
It may end up printing the last line without an ending line-feed, which may prevent the last line from being read by various UNIX utilities like sed and awk.
It would require a KSH or KSH-like shell, for the $(( )) math syntax.
Code:
c=0
MAX=15
PREFIX=""
# read lines
while read f
do
# split lines into $1, $2, ...
set -- $f
for d in $*
do
if [ `expr $c % $MAX` -eq 0 ]
then
# PREFIX being blank prevents extra blank line on the very first line
printf "${PREFIX}%s" "$d"
PREFIX="\n"
else
printf " %s" "$d"
fi
c=`expr $c + 1`
done
done < tmp.file
echo
Last edited by Corona688; 06-16-2011 at 01:50 PM..
Hi Friends,
I have a log file as below
siteid = HYD
spc = 100
rset = RS_D_M
siteid = DEL
spc = 200
rset = RS_K_L
siteid = DEL2
spc = 210
rset = RS_D_M
Now I need a output like column wise as below.
siteid SPC rset
HYD 100 RS_D_M (2 Replies)
Hi guys I want to print the values by using this script but its giving the no of rows and columns as input instead of values
Would you plz help me on this
FILE- chr1.txt
1981 1
1971 1
1961 1
1941 1
perl script
#!/usr/bin/perl -w
$infile1 = 'chr1.txt';
$outfile3 = 'out3.txt';
... (3 Replies)
This is for an Oracle journal import. I was using a pl/sql package and oracle API's. Oracle added invoker rights to their API's and now my package won't run. I didn't want to use their API's anyway. The only reason i was using pl/sql and the API's (just a package) was to utilize a cursor. How... (2 Replies)
Hi Everyone,
I have a file text.cvs, which is a file with columns from excel. The data are separeted with semicolon. The content of the file looks like
A B C D E F
1 3 3 4 3 3
2 2 1 2 5 2
5 6 1 1 2 1
Now I wish to write an script which writes the colums A, C and F in... (4 Replies)
I have a script which converts rows to columns.
file_name=$1
mailid=$2
#CREATE BACKUP OF ORIGINAL FILE
#cp ${file_name}.xlsx ${file_name}_temp.xlsx
#tr '\t' '|' < ${file_name}_temp.xlsx > ${file_name}_temp.csv
#rm ${file_name}_temp.xlsx
pivot_row=`head -1 ${file_name}`
sed 1d... (3 Replies)
Hi All
I want to have a Perl script which convert columns to rows.
The Perl should should read the data from input file.
Suppose the input file is
7215484
date to date
173.3
A
1.50
2.23
8.45
10.14
2.00
4.50
2.50
31.32
7216154
month to month (3 Replies)
I have a dataset with 120 columns. I would like to write a script, that takes the average of every two columns, starting from columns 2 and 3, and moving consecutively in frames of 3 columns, all the way until the last column.
The first column in the output file would be the averages of columns... (1 Reply)
Hi
I have a file having the values like below
----------------------------
.set A
col1=”ABC”
col2=34
col3=”DEF”
col4=”LMN”
col5=25
.set A
.set B
col1=55
col3=”XYZ”
col4=”PQR”
col5=66
.set B
.set C
col2=”NNN” (1 Reply)
Hello, everyone
I am beginner for shell programming. I want to print all lines that have the same values in first two columns
data:
a b 1 2
a a 3 4
b b 5 6
a b 4 6
what I expected is :
a a 3 4
b b 5 6
but I searched for one hour in... (2 Replies)
Hello
I have a large database with the following structure:
Headword=Gloss1;Gloss2;Gloss3
The Glosses are separated by a ;
What I need is to reduce the multiple glosses on each row to columns
Headword=Gloss1
Headword=Gloss2
Headword=Gloss3
I had written the following script in awk... (5 Replies)
Discussion started by: gimley
5 Replies
LEARN ABOUT HPUX
read
read(1) General Commands Manual read(1)NAME
read - read a line from standard input
SYNOPSIS
var ...
DESCRIPTION
reads a single line from standard input. The line is split into fields as when processed by the shell (refer to shells in the first field
is assigned to the first variable var, the second field to the second variable var, and so forth. If there are more fields than there are
specified var operands, the remaining fields and their intervening separators are assigned to the last var. If there are more vars than
fields, the remaining vars are set to empty strings.
The setting of variables specified by the var operands affect the current shell execution environment.
Standard input to can be redirected from a text file.
Since affects the current shell execution environment, it is usually provided as a normal shell special (built-in) command. Thus, if it is
called in a subshell or separate utility execution environment similar to the following, it does not affect the shell variables in the
caller's environment:
Options
recognizes the following options:
Do not treat a backslash character in any special way.
Consider each backslash to be part of the input line.
Opperands
recognizes the following operands:
var The name of an existing or nonexisting shell variable.
EXTERNAL INFLUENCES
Environment Variables
determines the internal field separators used to delimit fields.
RETURN VALUE
exits with one of the following values:
0 Successful completion.
>0 End-of-file was detected or an error occurred.
EXAMPLES
Print a file with the first field of each line moved to the end of the line.
while read -r xx yy
do
printf "%s %s
" "$yy" "$xx"
done < input_file
SEE ALSO csh(1), ksh(1), sh(1), sh-posix(1).
STANDARDS CONFORMANCE read(1)