[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Changing colouring through a line of text

From: Bipul kumar
Subject: Re: Changing colouring through a line of text
Date: Tue, 21 Mar 2023 20:19:35 +0530


If I understand correctly, you want to enter two things: a number
indicating the number of columns you want, and a string.
You want to print the beginning of the string up to the specified number of
columns in blue and the rest of the string in white.

At this point of your code  ** printf '%s%s%s%s%s\n' "${blu}" "$vl" "$wht"
"$vl" "${rst}" **
you should modify your code to retrieve output by utilizing the specified
range mentioned in the 1st argument (i.e., 18 in your case).
Then, you need to print it using the reference of shell variables (e.g.,
blue and white) that you defined earlier in your code for foreground.

For example here in this picture
https: // <http://Working script>
[image: faceoff.jpeg]
To retrieve the desired string for the blue and white outputs, I have used
the cut command in a subshell.
This command is applied to the input string provided as the second argument
to the function.

    97F0 2E08 7DE7 D538 BDFA  B708 86D8 BE27 8196 D466
                    ** Please excuse brevity and typos. **

On Mon, Mar 20, 2023 at 8:58 PM uzibalqa <> wrote:

> I am doing a bash function that takes a multiline string and prints each
> line.  The first part of each line uses a blue foreground, whereas the rest
> of each line uses a white foreground.
> I want to have the user define a column number from which the foreground
> colour on each line changes to white.
> I need help to do this.
> The input string would be
> str='
>  marinex-dgrul    Digit
>  marinex-ltrul    Letter
>  marinex-nmrul    Numeric'
> Then one would call
> marinex-ndic 18 "$str"
> The plan is to have the beginning of each line being blue, whilst from
> column number 18 the colour changes to white.
> marinex-ndic ()
>  {
>   ## Show coloured  and label
>   local -r rst="$( tput sgr0 )"  # Default Graphic Rendition
>   local -r blu="$( tput bold; tput setaf 39 )"  # BLUE
>   local -r wht="$( tput bold; tput setaf 15 )"  # WHITE
>   printf '%s\n' "$@"  \
>     | while IFS="" read -r vl; do
>         printf '%s%s%s%s%s\n' "${blu}" "$vl" "$wht" "$vl" "${rst}"
>       done
>  }

JPEG image

reply via email to

[Prev in Thread] Current Thread [Next in Thread]