Explanation regarding escape formating


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Explanation regarding escape formating
# 1  
Old 03-22-2013
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 12:52 PM.. Reason: to edit wrong title
# 2  
Old 03-22-2013
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

# 3  
Old 03-22-2013
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 03-22-2013
Please mr Yoda explain code..and thanks for informing about wrong title
# 5  
Old 03-22-2013
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

# 6  
Old 03-22-2013
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

# 7  
Old 03-22-2013
Code:
echo "ax:73.1(73.01)" | awk ' { gsub(/.*:|\(.*/,x) }1 '

For further reference: GAWK String Functions
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

File formating

I need to create a fixed width file based on the column lengths. lets assume I have six(this may be dynamic) fields each are of different length column1=6 #size of the column column2=3 column3=2 column4=3 column5=4 column6=5 I tried below code snippet but it is not working echo... (4 Replies)
Discussion started by: gvkumar25
4 Replies

2. UNIX for Beginners Questions & Answers

File formating help

Hi all, I am having the file below I need that as below Thanks, Arun (12 Replies)
Discussion started by: arunkumar_mca
12 Replies

3. Shell Programming and Scripting

Formating questions

Hi, I have a data as follows in some files, i want to change CHAR(2-20) to VARCHAR(2-20). I should not touch any line with CHAR(1) Example: Input: cur_rev_stage_cd CHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, prev_rev_stage_cd CHAR(5) CHARACTER SET LATIN NOT... (7 Replies)
Discussion started by: srikanth38
7 Replies

4. Shell Programming and Scripting

Auto escape script to escape special chars in script args

This is a bit off the wall, but I often need to run scripts where there are argument values that contain special characters. For example, $ ./process.exe -t M -N -o temp.mol.s -i ../molfiles/N,N\',N\'\'-trimethylbis\(hexamethylene\)triamine.mol && sfile_space_to_tab.sh temp.mol.s temp.s It... (1 Reply)
Discussion started by: LMHmedchem
1 Replies

5. Shell Programming and Scripting

Formating output

Hello Team i have a file with following data (as columns). I need implement a syntax like below for altering table ALTER TABLE1 TABLENAME ADD COLUMN COL1 CHAR(5) NOT NULL WITH DEFAULT ADD COLUMN COL2 CHAR(5) .. .. ADD COLUMN COLn CHAR(5) NOT NULL... (1 Reply)
Discussion started by: rocking77
1 Replies

6. Shell Programming and Scripting

Text formating

Dear all I had input file as mention below and want op as mention. Kindly let me knw possible ways. Regards Jaydeep INPUT: RXOTX-48-1 2A 34 2B 35 RXOTX-499-2 2C 32 RXOTX-4-1 2D 23 OUTPUT: (3 Replies)
Discussion started by: jaydeep_sadaria
3 Replies

7. Shell Programming and Scripting

formating output

Hi all, I want to start a new topic on this matter I have this script, #!perl use strict; use warnings; use Data::Dumper; open my $log, '>', 'log-external.txt' or die "Could not open log: $!"; print $log "Subnet,Static,DHCP,Unused\n"; open my $dump, '>', 'dump.log' or die... (2 Replies)
Discussion started by: richsark
2 Replies

8. Shell Programming and Scripting

formating output

I have a file proc.txt which contains the below one. Content-type: text/html <H2>No query</H2> infodba-marabou:/tmp => export QUERY_STRING="IMAN_server_report=full" infodba-marabou:/tmp => $IMAN_ROOT/web/htdocs/cgi-bin/iman > /tmp/proc.txt infodba-marabou:/tmp => cat proc.txt... (20 Replies)
Discussion started by: Krrishv
20 Replies

9. Shell Programming and Scripting

formating date

Guys I have a date value like this in a table -> 2006-12-29 12:57:08(data type varchar2(25)) I am trying to subtract this column from sysdate. I am unable to do that. can u guys suggest me a way to do this.. (2 Replies)
Discussion started by: ragha81
2 Replies

10. UNIX for Dummies Questions & Answers

Formating in Echo?

Hi, In my code: echo " Field1 " " Filed2 " " Filed3 " >> $myfile echo "--------" "------- " "--------">> $myfile echo $value1 $value2 $value3 >> $myfile echo $value1 $value2 $value3 >> $myfile echo $value1 $value2 $value3 >> $myfile My file... (4 Replies)
Discussion started by: redlotus72
4 Replies
Login or Register to Ask a Question