Sponsored Content
Top Forums Shell Programming and Scripting BASH: print matrix from single array Post 302417780 by Bubnoff on Friday 30th of April 2010 05:04:15 PM
Old 04-30-2010
Another question

This is what I've got and it seems to work.

Code:
ELEMENTS2=${#ARRAY2[*]}

cols=5
rows=$((ELEMENTS2/cols+1))

printf "Rows = $rows\n"
printf "Elements = $ELEMENTS2\n"

for (( row=1; row<=rows; row++)); do
    for ((col=1; col<=cols; col++)); do
        bib=${ARRAY2[((cols*((row-1))+col-1))]}
        next=${ARRAY2[((cols*((row-1))+col))]}
        if [[ -z "$next" ]]
        then
            printf "$bib"
        else
            printf "%s, " "$bib" 
        fi  
    done
    printf "\n"
done

If the next variable is null then it leaves off the trailing comma. My question is:

Am I accessing the next variable with:
Code:
next=${ARRAY2[((cols*((row-1))+col))]}

...?
Seems obvious, but thought I'd ask to make sure I'm following the logic
correctly. The output is as expected.

Thanks again!

Bub

UPDATE *** Nevermind, I get it.

Last edited by Bubnoff; 04-30-2010 at 06:13 PM.. Reason: Flash of understanding.
This User Gave Thanks to Bubnoff For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

PERL: How do i print an associative matrix?

Hello guys, I have in PERL an associative 2-dimensional array, called matrix. The array (actually the matrix) is made up like this matrix = x; matrix = y; matrix = w; matrix = z; ... but the names a, b, c, d are set just at runtime. The question is: how can i get all the keys of... (2 Replies)
Discussion started by: foo.bar
2 Replies

2. Shell Programming and Scripting

How can I print array elements as different columns in bash?

Hi Guys, I have an array which has numbers including blanks as follows: 1 26 66 4.77 -0.58 88 99 11 12 333 I want to print a group of three elements as a different column in a file as follows:(including blanks where there is missing elements) for.e.g. array element #7... (4 Replies)
Discussion started by: npatwardhan
4 Replies

3. Shell Programming and Scripting

Perl question - How do I print contents of an array on a single line?

I have the following code: print @testarray; which returns: 8 8 8 9 How do I return the array like this: The output is: 8, 8, 8, 9 (5 Replies)
Discussion started by: streetfighter2
5 Replies

4. UNIX for Dummies Questions & Answers

BASH - Creating a Matrix

I'm trying to create a Matrix using bash. The expected output is .AB CDE FG 1 2 3 4 5 6 7 I'm a newbie in shell language, really appreciate if there is anyone who can guide me with this. Double post again, continued here (0 Replies)
Discussion started by: vinzping
0 Replies

5. Shell Programming and Scripting

how to output the array result into a matrix

I have a file like this: ASSPASVFETQY,hTRBV12-4,hTRBJ2-5,2 ASSPASTGGDYGYT,hTRBV18,hTRBJ1-2,2 ASSPASGDGYT,hTRBV5-1,hTRBJ1-2,2 ASSPASFPEDTQY,hTRBV27,hTRBJ2-3,2 ASSPARVNYGYT,hTRBV5-1,hTRBJ1-2,2 ASSPARTSGGLNEQF,hTRBV6-4,hTRBJ2-1,2 ASSPARQSYNEQF,hTRBV11-1,hTRBJ2-1,2... (3 Replies)
Discussion started by: xshang
3 Replies

6. Shell Programming and Scripting

Print array into a single file - AWK

Hi all, I been looking for a solution to the fact that when I use: for (i=1; i<=NF; i++) print $ifields that are originally in a single line are printed in a single line I have severals files for which the first 7 are the same, but the number of variables after that can vary, for example NF... (5 Replies)
Discussion started by: PaulaL
5 Replies

7. Shell Programming and Scripting

Make Separated files from a single matrix - Perl

Hey Masters, Here is my input: fragmentID chromosome start end HEL25E TRIP1 r5GATC2L00037 chr2L 5301 6026 0.03 0.036 r5GATC2L00038 chr2L 6023 6882 -0.025 -0.041 r5GATC2L00040 chr2R 6921 7695 -0.031 0.005 r5GATC2L00042 chr2R 7715 8554 -0.006 -0.024 r5GATC2L00043 chr3L 8551 8798 0.042 0... (4 Replies)
Discussion started by: @man
4 Replies

8. Shell Programming and Scripting

Help w/ Reading Matrix & Storing in dynamic array

First of I would just like to state that I am not looking for you guys to just do my work for me, I do want to learn and actually understand everything that is happening. Hey all, I am having trouble on this. What I need to do is... Write an executable C file that will take a text file (not a... (8 Replies)
Discussion started by: innvert
8 Replies

9. UNIX for Beginners Questions & Answers

Limiting Bash array single line output

#!/bin/bash PH=(AD QD QC 5H 6C 8C 7D JH 3H 3S) echo ${PH} In the above array, how can I print to screen just the first 8 elements of ${PH} and have the last 2 elements print just below the first line starting underneath AD? I need to do this in order to save terminal window spacing... (5 Replies)
Discussion started by: cogiz
5 Replies

10. Shell Programming and Scripting

How to print median values of matrix -awk?

I use the following script to print the sum and how could I extend this to print medians instead? thanks name s1 s2 s3 s4 g1 2 8 6 5 g1 5 7 9 9 g1 6 7 8 9 g2 8 8 8 8 g2 7 7 7 7 g2 10 10 10 10 g3 3 12 1 24 g3 5 5 24 48 g3 12 3 12 12 g3 2 3 3 3 output name s1 s2 s3 s4 g1 5 7 8 9... (5 Replies)
Discussion started by: quincyjones
5 Replies
overlay(3XCURSES)					  X/Open Curses Library Functions					 overlay(3XCURSES)

NAME
overlay, overwrite - copy overlapped windows SYNOPSIS
cc [ flag... ] file... -I /usr/xpg4/include -L /usr/xpg4/lib -R /usr/xpg4/lib -lcurses [ library... ] c89 [ flag... ] file... -lcurses [ library... ] #include <curses.h> int overlay(const WINDOW *srcwin, WINDOW *dstwin); int overwrite(const WINDOW *srcwin, WINDOW *dstwin); PARAMETERS
srcwin Is a pointer to the source window to be copied. dstwin Is a pointer to the destination window to be overlayed or overwritten. DESCRIPTION
The overwrite() and overlay() functions overlay srcwin on top of destwin. The srcwin and dstwin arguments do not have to be the same size; only text where the two windows overlap is copied. The overwrite() function copies characters as though a sequence of win_wch(3XCURSES) and wadd_wch(3XCURSES) were performed with the desti- nation window's attributes and background attributes cleared. The overlay() function does the same thing, except that, whenever a character to be copied is the background character of the source win- dow, overlay() does not copy the character but merely moves the destination cursor the width of the source background character. If any portion of the overlaying window border is not the first column of a multi-column character, then all the column positions will be replaced with the background character and rendition before the overlay is done. If the default background character is a multi-column character when this occurs, then these functions fail. RETURN VALUES
Upon successful completion, these functions return OK. Otherwise, they return ERR. ERRORS
No errors are defined. EXAMPLES
Example 1: Implement a pop-up dialog The following example demonstrates the use of overwrite() to implement a pop-up dialog box. #include <curses.h> /* * Pop-up a window on top of curscr. If row and/or col * are -1 then that dimension will be centered within * curscr. Return 0 for success or -1 if malloc() failed. * Pass back the working window and the saved window for the * pop-up. The saved window should not be modified. */ int popup(work, save, nrows, ncols, row, col) WINDOW **work, **save; int nrows, ncols, row, col; { int mr, mc; getmaxyx(curscr, mr, mc); /* Windows are limited to the size of curscr. */ if (mr < nrows) nrows = mr; if (mc < ncols) ncols = mc; /* Center dimensions. */ if (row == -1) row = (mr-nrows)/2; if (col == -1) col = (mc-ncols)/2; /* The window must fit entirely in curscr. */ if (mr < row+nrows) row = 0; if (mc < col+ncols) col = 0; *work = newwin(nrows, ncols, row, col); if (*work == NULL) return (-1); if ((*save = dupwin(*work)) == NULL) { delwin(*work); return (-1); } overwrite(curscr, *save); return(0); } /* * Restore the region covered by a pop-up window. * Delete the working window and the saved window. * This function is the complement to popup(). Return * 0 for success or -1 for an error. */ int popdown(work, save) WINDOW *work, *save; { (void) wnoutrefresh(save); (void) delwin(save); (void) delwin(work); return(0); } /* * Compute the size of a dialog box that would fit around * the string. */ void dialsize(str, nrows, ncols) char *str; int *nrows, *ncols; { int rows, cols, col; for (rows = 1, cols = col = 0; *str != ''; ++str) { if (*str == ' ') { if (cols < col) cols = col; col = 0; ++rows; } else { ++col; } } if (cols < col) cols = col; *nrows = rows; *ncols = cols; } /* * Write a string into a dialog box. */ void dialfill(w, s) WINDOW *w; char *s; { int row; (void) wmove(w, 1, 1); for (row = 1; *s != ''; ++s) { (void) waddch(w, *((unsigned char*) s)); if (*s == ' ') wmove(w, ++row, 1); } box(w, 0, 0); } void dialog(str) char *str; { WINDOW *work, *save; int nrows, ncols, row, col; /* Figure out size of window. */ dialsize(str, &nrows, &ncols); /* Create a centered working window with extra */ /* room for a border. */ (void) popup(&work, &save, nrows+2, ncols+2, -1, -1); /* Write text into the working window. */ dialfill(work, str); /* Pause. Remember that wgetch() will do a wrefresh() */ /* for us. */ (void) wgetch(work); /* Restore curscr and free windows. */ (void) popdown(work, save); /* Redraw curscr to remove window from physical screen. */ (void) doupdate(); } ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Standard | +-----------------------------+-----------------------------+ |MT-Level |Unsafe | +-----------------------------+-----------------------------+ SEE ALSO
copywin(3XCURSES), libcurses(3XCURSES), wadd_wch(3XCURSES), win_wch(3XCURSES), attributes(5), standards(5) SunOS 5.10 5 Jun 2002 overlay(3XCURSES)
All times are GMT -4. The time now is 08:27 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy