Context for use of [.symbol.] awk notation


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Context for use of [.symbol.] awk notation
# 1  
Old 03-23-2017
Context for use of [.symbol.] awk notation

Hi

Just wondering ... do you have an example of context that would demonstrates how usefull the awk notation [.symbol.] can efficiently be used ?

Thx Smilie
# 2  
Old 03-23-2017
Without context I'm not sure what you mean.

["Associative arrays"]? Removing duplicates in a list of a few million unsorted items or less is one very common use. awk '! ($0 in A) { A[$0] ; print }'

/[rR]egular [eE]xpressions.?/ Any time you need to match a set of characters. Like stripping non-alphanumeric / non-space characters.
Code:
awk '{ gsub(/[^a-zA-Z0-9\r\n\t ]+/, ""); } 1'

This User Gave Thanks to Corona688 For This Post:
# 3  
Old 03-23-2017
Hi Corona,

Thank for your time but i already know how do the associativ array works.Smilie

In fact i was refering and wondering about to the "collating" notation mentionned here

it says "A collating symbol is a multi-character sequence that should be treated as a unit"

so if [.my_word.] is more or less processed the same way as /my_word/ , i don't see the added value of this specific notation so i was wondering what is behind "treated as a unit" ...

So if someone has a good example of a context in which such notation is necessary, i would be glad to have a look at it, because i think i miss something here. Smilie

Last edited by ctsgnb; 03-23-2017 at 01:18 PM..
# 4  
Old 03-23-2017
Oh, that's a new one on me.

It looks like an internationalization feature, awk's equivalent of digraphs and trigraphs, multi-byte sequences which implement "extended" non-ASCII characters while still writing the program in pure ASCII. They're predefined, so [.STRING.] is meaningless, and there's a big list somewhere of what ASCII sequences actually translate to what Russian characters somewhere.

Of course, the list will be in Russian, so us ASCII-worlders probably don't know the right words to find it. It will also probably depend on being in the right extended-ascii set where they have any meaning and using some Russian subset of awk. This feature is often not implemented unless it's really needed.

So to us, not that useful. To someone's special Russian awk in Russia, it might be indispensable.
This User Gave Thanks to Corona688 For This Post:
# 5  
Old 03-23-2017
In some languages (such as Welsh), the two character sequence 'ch' is treated as a single collating element and sorts differently from the two single collating elements (and characters) 'c' and 'h'. I don't understand all of those rules, but when the sound made when pronouncing the characters is as it is when pronouncing "church", the collating element used is 'ch' and when the sound made is more like 'k' (as in "Christ"), the two collating elements 'c' and 'h' are used. If I understand it correctly, in a locale for Welsh, the RE [[.Ch.]] should match the "Ch" in "Church", but should not match the "Ch" in "Christ"; and the RE [[.C.][.h.]] should match the start of "Christ", but should not match the start of "Church".

In addition to the collating element bracket expressions, there are the more common character class bracket expressions like [[:alnum:]] which will match any alphabetic or numeric character. And, the equivalence class expressions (also uncommon in English locales) like [[=e=]] which will match any character in the same equivalence class. For example, in various European language locales, [[=e=]] could match "è", "é", "ë", "ē", "ê", "ĕ", "ě", "ȅ", "ȇ", "ḕ", "ḗ", or "ẻ" in addition to matching "e".

And, of course, there are the matching list and non-matching list bracket expressions like [ch] (which matches a "c" or an "h") and [^ch] (which matches any single character that is not "c" and is not "h").
# 6  
Old 03-24-2017
In what context would awk use collation, though? > < for strings, or does it have other meaning?
# 7  
Old 03-24-2017
Quote:
Originally Posted by Corona688
In what context would awk use collation, though? > < for strings, or does it have other meaning?
In standard awk, just for < and > on string operands. I believe gawk and some other versions of awk have extensions to the standards that provide built-in functions to sort arrays (which presumably would sort in collation order).
These 2 Users Gave Thanks to Don Cragun For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Questions related to if in awk context and if without awk context

I wrote this code, questions follow #! /bin/bash -f # Purpose - to show how if syntax is used within an awk clear; ls -l; echo "This will print out the first two columns of the inputted file in this directory"; echo "Enter filename found in this directory"; read input; ... (11 Replies)
Discussion started by: Seth
11 Replies

2. Shell Programming and Scripting

Help with filter result (scientific notation) by using awk

Input file: data1 0.05 data2 1e-14 data1 1e-330 data2 1e-14 data5 2e-60 data5 2e-150 data1 4e-9 Desired output: data2 1e-14 data1 1e-330 data2 1e-14 data5 2e-60 data5 2e-150 I would like to filter out those result that column 2 is less than 1e-10. Command try: (1 Reply)
Discussion started by: cpp_beginner
1 Replies

3. Shell Programming and Scripting

[Solved] awk Errors on notation

can someone spot what i'm doing wrong here: awk 'BEGIN{printf("%0.2f", 1 / 2649320) * 100}' i get this error: awk: line 1: syntax error at or near * then i do this and get the answer i'm trying to avoid: awk 'BEGIN{print(1 / 2649320) * 100}' 3.77455e-05 (7 Replies)
Discussion started by: SkySmart
7 Replies

4. Shell Programming and Scripting

Perl: scientific notation to decimal notation

hello folks, I have few values in a log which are in scientific notation. I am trying to convert into actual decimal format or integer but couldn't able to convert. Values in scientific notation: 1.1662986666666665E-4 2.0946799999999998E-4 3.0741333333333333E-6 5.599999999999999E-7... (2 Replies)
Discussion started by: scriptscript
2 Replies

5. Shell Programming and Scripting

Get rid of awk notation

echo 0.633588 1875 | awk '{print $1 * $2 * 1024}' is there a better way to run the above command? it keeps printing out in notation and i do not want that at all. when i run the above, i get: 1.21649e+06 OS: linux language:bash (1 Reply)
Discussion started by: SkySmart
1 Replies

6. Shell Programming and Scripting

Convert decimal notation to ANSI point code notation

wondering if anyone has any thoughts to convert the below thru a shell script Convert decimal signalling point notation to ANSI point code notation There is a site that does that conversion but i need to implement the solution in a shell script.....Thoughts.... OS: Solaris 9 ... (4 Replies)
Discussion started by: aavam
4 Replies

7. Solaris

/usr/lib/passwdutil.so.1: symbol __nsl_fgetspent_r: referenced symbol not found

deleteing post (0 Replies)
Discussion started by: dshakey
0 Replies

8. Shell Programming and Scripting

Turning off exponential notation in awk

I have various numbers that I'm printing out from a statistical summary script. I'd like it to stop using exponential format. Of course, I can use printf with 'd' and 'f' and various parameters to specify a format, but then it has other undesirable effects, like tacking on extra 0's or truncating... (0 Replies)
Discussion started by: treesloth
0 Replies

9. Shell Programming and Scripting

Awk symbol for last column

Hi , I have a bunch of files with different # of columns but I want to write a single awk script. What is the awk symbol for last column? say '{print $lastcol}' or something (3 Replies)
Discussion started by: grossgermany
3 Replies

10. Shell Programming and Scripting

keep context in awk

here is a data file. ------------------------------------- KSH, CSH, BASH, PERL, PHP, SED, AWK KSH, CSH, BASH, PERL, PHP, BASH, PERL, PHP, SED, AWK CSH, BASH, PERL, PHP, SED, KSH, CSH, BASH, PERL, PHP, SED, AWK ------------------------------------- My desired output is... (2 Replies)
Discussion started by: VTAWKVT
2 Replies
Login or Register to Ask a Question