Sponsored Content
Full Discussion: Insert Tabs / Indent text
Top Forums Shell Programming and Scripting Insert Tabs / Indent text Post 302288868 by vgersh99 on Wednesday 18th of February 2009 07:26:20 AM
Old 02-18-2009
a slightly different output format, but....
tree.awk:
Code:
#! /usr/bin/awk -f

# tree.10
# print nice tree from find(1) output and alike
# Example:
#       find dir | tree.awk

BEGIN{
        FS = "/";
        i = 0;
        while ( i++ <= ARGC )
        {
                if ( ARGV[i] ~ /(-h)|(-\?)/ )
                {
                        print "Usage: tree.awk [FS=field-separator] [file ...]"
                        EXIT=1;
                        exit 1;
                }
        }
}

function fineprint(branches)
{
        gsub(" ","    ", branches);
        gsub("[|]","& ", branches);
        gsub("`","&---", branches);
        gsub("[+]","&---", branches);
        return branches;
}

function mktree(number,branches,   tnumber)
{

        if (number > NR)
        {
                return number - 1;
        }

        tnumber = number;

        while (array["shift", number] < array["shift", tnumber + 1])
        {
                tnumber = mktree(tnumber + 1, branches" ");
                if (tnumber == NR) break;
        }

        if (array["shift", number] == array["shift", tnumber + 1])
        {
                array["slip", number] = branches"+";
        }

        if ((array["shift", number] > array["shift", tnumber + 1]) \
                || tnumber == NR)
        {
                array["slip", number] = branches"`";
        }


        return tnumber;
}

{
        array["shift", NR] = NF;
        array["name", NR] = $(NF);
}

END{
        if (EXIT)
                exit EXIT;

        for (i = 1; i <= NR; i++)
        {
                i = mktree(i, "");
        }

        for (i = 1; i <= NR; i++)
        {

                if (i > 1)
                {
                        lprev = length(array["slip", i - 1]);
                        lcurr = length(array["slip", i]);
                        if (lprev > lcurr - 1)
                                legacy = substr(array["slip", i - 1], 0, \
                                                lcurr - 1);
                        else
                                legacy = array["slip", i-1];
                        tail = substr(array["slip", i], length(legacy) + 1 , \
                                        lcurr - length(legacy));
                        gsub("[+]", "|", legacy);
                        gsub("`", " ", legacy);
                        array["slip", i] = (legacy)(tail);
                }

                printf "%s%s\n", fineprint(array["slip", i]), \
                                array["name", i];

        }
}

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sh: Inserting tabs and moving text to 1 line

I trying to extract certain text from a csv file and then placing it into another csv file, but having problems getting the data to placed in one line with tab separated fields. Basically would like to have text sent to interfaces.csv in one line seperated by tabs. As it currently places files... (6 Replies)
Discussion started by: 00000008
6 Replies

2. Shell Programming and Scripting

How to insert some constant text at beginig of each line within a text file.

Dear Folks :), I am new to UNIX scripting and I do not know how can I insert some text in the first column of a UNIX text file at command promtp. I can do this in vi editor by using this command :g/^/s//BBB_ e,g I have a file named as Test.dat and it containins below text: michal... (4 Replies)
Discussion started by: Muhammad Afzal
4 Replies

3. Shell Programming and Scripting

Need to insert new text and change existing text in a file using SED

Hi all, I need to insert new text and change existing text in a file. For that I used the below line in the command line and got the expected output. sed '$a\ hi... ' shell > shell1 But I face problem when using the same in script. It is throwing the error as, sed: command garbled:... (4 Replies)
Discussion started by: iamgeethuj
4 Replies

4. Shell Programming and Scripting

Help with replacing tabs inside "" with some text/blank

I am poor with scripting;) I have a file in the following format; 'This is a "test in production" of importance.' I want to get rid of the spaces inside the "" part only to get the output as, 'This is a "testinproduction" of importance.' (1 Reply)
Discussion started by: shmathew
1 Replies

5. Web Development

How to indent the second line of text in html?

Hi, I have 3 lines in a text and i want to indent the 2nd line of the text. How can i do that in html? Here is the text. 1: XYZ. 2009 Jul 14. Perl is a scripting language. Perl is a high-level, general-purpose, interpreted, dynamic programming language ID: 2547999 The output... (1 Reply)
Discussion started by: vanitham
1 Replies

6. Shell Programming and Scripting

How to insert text after a block of text?

Input: fstab is a configuration file that contains information of all the partitions and storage devices in your computer. The file is located under /etc, so the full path to this file is /etc/fstab. The >>>>> characters would be replaced by some texts. For example if i run a... (5 Replies)
Discussion started by: cola
5 Replies

7. Shell Programming and Scripting

How do I insert text with sed ?

Hi I was wondering if anyone new of a solution to this problem? I need to copy a time stamp that is on a line of .text in a text file into multiple positions on the same line. I need to insert the time stamp on the same line between every occurance of the text ".pdf_.html" right after the... (9 Replies)
Discussion started by: Paul Walker
9 Replies

8. Shell Programming and Scripting

[Solved] Insert tabs as delimiter

Hello all, I have an unstructured file with space as delimiter , which I want to structure. The output file should actually have only 5 columns with tab as delimiter. The 4th column can have only 3 values ( biological_process , cellular_component , molecular_function ) Here is how the... (12 Replies)
Discussion started by: ritakadm
12 Replies

9. Shell Programming and Scripting

Echo a colored text with tabs

I have the line below to echo values with tab between them. The text is also colored, however, some\t does not work. The output of this one below will have the first two \t not working. echo "\033}\t$time\t$end\t$day\t$score\033 This one below will have all the \t working but will also... (4 Replies)
Discussion started by: erin00
4 Replies

10. Shell Programming and Scripting

How to insert text within a file?

Hi, I am trying to check for missing dates in a file and would want to insert the missing date into the file. Currently the script is as below #!/bin/ksh dates="dates" cat ${dates} | grep -v "^#" curr_month=`date '+%m` curr_day=`date '+%d` curr_year=`date '+%Y` #curr_month=02... (7 Replies)
Discussion started by: newbie_01
7 Replies
is  a  text formatter.	Its input consists of the text to be out-
put, intermixed with formatting commands.  A  formatting  command
is  a  line  containing  the  control character followed by a two
character command name, and possibly one or more arguments.   The
control  character is initially . (dot).  The formatted output is
produced on standard output.  The formatting commands are  listed
below, with being a number, being a character, and being a title.
A + before n means it may be signed,  indicating  a  positive  or
negative change from the current value.  Initial values for where
relevant, are given in parentheses.
  .ad	  Adjust right margin.
  .ar	  Arabic page numbers.
  .br	  Line break.  Subsequent text will begin on a new line.
  .bl n   Insert n blank lines.
  .bp +n  Begin new page and number it n. No n means +1.
  .cc c   Control character is set to c.
  .ce n   Center the next n input lines.
  .de zz  Define a macro called zz. A line with .. ends definition.
  .ds	  Double space the output. Same as .ls 2.
  .ef t   Even page footer title is set to t.
  .eh t   Even page header title is set to t.
  .fi	  Begin filling output lines as full as possible.
  .fo t   Footer titles (even and odd) are set to t.
  .hc c   The character c (e.g., %) tells roff where hyphens are permitted.
  .he t   Header titles (even and odd) are set to t.
  .hx	  Header titles are suppressed.
  .hy n   Hyphenation is done if n is 1, suppressed if it is 0. Default is 1.
  .ig	  Ignore input lines until a line beginning with .. is found.
  .in n   Indent n spaces from the left margin; force line break.
  .ix n   Same as .in but continue filling output on current line.
  .li n   Literal text on next n lines.  Copy to output unmodified.
  .ll +n  Line length (including indent) is set to n (65).
  .ls +n  Line spacing: n (1) is 1 for single spacing, 2 for double, etc.
  .m1 n   Insert n (2) blank lines between top of page and header.
  .m2 n   Insert n (2) blank lines between header and start of text.
  .m3 n   Insert n (1) blank lines between end of text and footer.
  .m4 n   Insert n (3) blank lines between footer and end of page.
  .na	  No adjustment of the right margin.
  .ne n   Need n lines.  If fewer are left, go to next page.
  .nn +n  The next n output lines are not numbered.
  .n1	  Number output lines in left margin starting at 1.
  .n2 n   Number output lines starting at n.  If 0, stop numbering.
  .ni +n  Indent line numbers by n (0) spaces.
  .nf	  No more filling of lines.
  .nx f   Switch input to file f.
  .of t   Odd page footer title is set to t.
  .oh t   Odd page header title is set to t.
  .pa +n  Page adjust by n (1).  Same as .bp
  .pl +n  Paper length is n (66) lines.
  .po +n  Page offset.	Each line is started with n (0) spaces.
  .ro	  Page numbers are printed in Roman numerals.
  .sk n   Skip n pages (i.e., make them blank), starting with next one.
  .sp n   Insert n blank lines, except at top of page.
  .ss	  Single spacing.  Equivalent to .ls 1.
  .ta	  Set tab stops, e.g., .ta 9 17 25 33 41 49 57 65 73 (default).
  .tc c   Tabs are expanded into c.  Default is space.
  .ti n   Indent next line n spaces; then go back to previous indent.
  .tr ab  Translate a into b on output.
  .ul n   Underline the letters and numbers in the next n lines.
All times are GMT -4. The time now is 05:24 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy