Unix/Linux Go Back    


Shell Programming and Scripting BSD, Linux, and UNIX shell scripting — Post awk, bash, csh, ksh, perl, php, python, sed, sh, shell scripts, and other shell scripting languages questions here.

Explanation regarding escape formating

Shell Programming and Scripting


Closed    
 
Thread Tools Search this Thread Display Modes
    #1  
Old Unix and Linux 03-22-2013
Akshay Hegde's Unix or Linux Image
Akshay Hegde Akshay Hegde is offline Forum Advisor  
Forum Advisor
 
Join Date: Nov 2012
Last Activity: 7 April 2017, 11:18 AM EDT
Posts: 1,788
Thanks: 110
Thanked 623 Times in 556 Posts
Explanation regarding esp formating

Hi ! experts

I would like to understand escape formating in awk, please anyone explain about the same using following datafile


Code:
 DATA SET: ./myfile.asc
             TIME: 29-OCT-2011 08:15 to 15-DEC-2011 16:15
             ax: 73.1
             aY: 15.2
             aZ: -8.361
 Column  1: var_1 is xyz (cm/s)
 Column  2: var_2 is axyz (cm/s)
 Column  3: var_3 is abcde (cm/s)
 Column  4: cnst is constant
                            var_1  var_2 var_3  cnst
29-OCT-2011 08:30:00 /    1:   ....   ....   ....  1.000
29-OCT-2011 09:00:00 /    2:   ....   ....   ....  1.000
29-OCT-2011 09:30:00 /    3:   ....   ....   ....  1.000
29-OCT-2011 10:00:00 /    4:   ....   ....   ....  1.000
29-OCT-2011 10:30:00 /    5:   ....   ....   ....  1.000

from datafile I want to print like below

Code:
29-OCT-2011 08:15  15-DEC-2011 16:15 73.1 15.2 -8.361 29-OCT-2011 08:30:00       ....   ....   ....  1.000
29-OCT-2011 08:15  15-DEC-2011 16:15 73.1 15.2 -8.361 29-OCT-2011 09:00:00       ....   ....   ....  1.000
29-OCT-2011 08:15  15-DEC-2011 16:15 73.1 15.2 -8.361 29-OCT-2011 09:30:00       ....   ....   ....  1.000
29-OCT-2011 08:15  15-DEC-2011 16:15 73.1 15.2 -8.361 29-OCT-2011 10:00:00       ....   ....   ....  1.000
29-OCT-2011 08:15  15-DEC-2011 16:15 73.1 15.2 -8.361 29-OCT-2011 10:30:00       ....   ....   ....  1.000

also please explain the same so that I can learn something from you

Last edited by Akshay Hegde; 03-22-2013 at 11:52 AM.. Reason: to edit wrong title
Sponsored Links
    #2  
Old Unix and Linux 03-22-2013
Yoda's Unix or Linux Image
Yoda Yoda is offline Forum Advisor  
Jedi Master
 
Join Date: Jan 2012
Last Activity: 23 June 2017, 11:42 AM EDT
Location: Galactic Empire
Posts: 3,544
Thanks: 251
Thanked 1,288 Times in 1,210 Posts
I didn't quite understand what you meant by escape formatting.

But you can produce your expected output using:

Code:
awk '
        /TIME:/ {
                        T = $0
                        gsub(/[ \t]*TIME: | to/, x, T)
        }
        /ax:/ {
                        AX = $NF
        }
        /aY:/ {
                        AY = $NF
        }
        /aZ:/ {
                        AZ = $NF
        }
        /^[0-9]/ {
                        R = $0
                        sub(/\/[ \t]*[0-9]*:/, x, R)
                        print T, AX, AY, AZ, R
        }
' datafile

Sponsored Links
    #3  
Old Unix and Linux 03-22-2013
wisecracker's Unix or Linux Image
wisecracker wisecracker is offline
Registered User
 
Join Date: Jan 2013
Last Activity: 22 June 2017, 3:16 PM EDT
Location: Loughborough
Posts: 1,210
Thanks: 364
Thanked 322 Times in 252 Posts
Google is your friend here:-


Code:
http://ascii-table.com/ansi-escape-sequences.php

Some of these can be used in awk...

Basic ones are...

Code:
1) Colours:  ......"\033[0;31;40m Some text..."...... Gives '\033' an octal value for character 27, '[' separater for the colours needed, '0' select standard _font_, ';' further separaters, '31' foreground colour, '40' background colour, 'm' notifies that colours and _fonts_ are going to be generated. FG and BG colours have a selection of 8 basic colours

2) Force a print porition: "\033[10;20f Some text..."...... Will position the cursor to 10 lines down and 20 characters across, 'f' here meaning FORCE...

Many others available just Google...

NOTE: Some ANSI Esc codes don't work inside some shells/terminals...
    #4  
Old Unix and Linux 03-22-2013
Akshay Hegde's Unix or Linux Image
Akshay Hegde Akshay Hegde is offline Forum Advisor  
Forum Advisor
 
Join Date: Nov 2012
Last Activity: 7 April 2017, 11:18 AM EDT
Posts: 1,788
Thanks: 110
Thanked 623 Times in 556 Posts
Please mr Yoda explain code..and thanks for informing about wrong title
Sponsored Links
    #5  
Old Unix and Linux 03-22-2013
Yoda's Unix or Linux Image
Yoda Yoda is offline Forum Advisor  
Jedi Master
 
Join Date: Jan 2012
Last Activity: 23 June 2017, 11:42 AM EDT
Location: Galactic Empire
Posts: 3,544
Thanks: 251
Thanked 1,288 Times in 1,210 Posts
The code is pretty much straightforward. Here is the explanation:

Code:
awk '
        /TIME:/ {                                       # Search pattern: TIME:
                        T = $0                          # If found assign current record: $0 to variable: T
                        gsub(/[ \t]*TIME: | to/, x, T)  # Substitute 0 or more occurrence of space or tab followed by TIME: with null in variable: T
        }                                               # Also Substitute space followed by to with null in variable: T

        /ax:/ {                                         # Search pattern: ax:
                        AX = $NF                        # If found assign last field: $NF to variable: AX
        }

        /aY:/ {                                         # Search pattern: aY:
                        AY = $NF                        # If found assign last field: $NF to variable: AY
        }

        /aZ:/ {                                         # Search pattern: aZ:
                        AZ = $NF                        # If found assign last field: $NF to variable: AZ
        }

        /^[0-9]/ {                                      # Search pattern: ^[0-9] (record starting with digits)
                        R = $0                          # If found assign current record: $0 to variable: R
                        sub(/\/[ \t]*[0-9]*:/, x, R)    # Substitute 0 or more occurrence of space or tab & by 0 or more occurrence of digits with null
                        print T, AX, AY, AZ, R          # Print values of all variables.
        }

' file

Sponsored Links
    #6  
Old Unix and Linux 03-22-2013
Akshay Hegde's Unix or Linux Image
Akshay Hegde Akshay Hegde is offline Forum Advisor  
Forum Advisor
 
Join Date: Nov 2012
Last Activity: 7 April 2017, 11:18 AM EDT
Posts: 1,788
Thanks: 110
Thanked 623 Times in 556 Posts
Thank you so much Yoda

if suppose pattern say in current example
Code:
ax:73.1(73.01)

then how to use gsub I need only first
Code:
73.1

Sponsored Links
    #7  
Old Unix and Linux 03-22-2013
Yoda's Unix or Linux Image
Yoda Yoda is offline Forum Advisor  
Jedi Master
 
Join Date: Jan 2012
Last Activity: 23 June 2017, 11:42 AM EDT
Location: Galactic Empire
Posts: 3,544
Thanks: 251
Thanked 1,288 Times in 1,210 Posts

Code:
echo "ax:73.1(73.01)" | awk ' { gsub(/.*:|\(.*/,x) }1 '

For further reference: GAWK String Functions
Sponsored Links
Closed

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Linux More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
Text formating jaydeep_sadaria Shell Programming and Scripting 3 11-15-2009 07:48 PM
formating output richsark Shell Programming and Scripting 2 05-06-2009 01:49 PM
Output formating jaydeep_sadaria Shell Programming and Scripting 1 04-10-2008 12:39 PM
formating date ragha81 Shell Programming and Scripting 2 01-05-2007 10:20 AM
Formating in Echo? redlotus72 UNIX for Dummies Questions & Answers 4 03-31-2005 06:04 AM



All times are GMT -4. The time now is 08:15 PM.