AWK: FS="[][]" ???


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting AWK: FS="[][]" ???
# 1  
Old 05-04-2012
AWK: FS="[][]" ???

Hi,

I was surprised to see such a field separatorSmilie

If it means the data between "[" and "]" I just would expect [] as FS.

Can someone explain me please, what that exactly means?


Thanks
# 2  
Old 05-04-2012
It means 'either "[" or "]" ' it is an extended regular expression (ERE).

Last edited by Scrutinizer; 05-04-2012 at 12:48 PM..
# 3  
Old 05-04-2012
Hi kajax,

There must be at least one character as field separator (FS). [] doesn't select any character, and [][] selects two, ] and [. Take a look:
Code:
$ cat infile
a[b[c]d
$ awk -F'[][]' '{ print $3 }' infile
c
$ awk -F'[]' '{ print $3 }' infile
awk: fatal: [ o [^ desemparejados: /[]/
$ awk -F[ '{ print $3 }' infile
c]d

# 4  
Old 05-14-2012
muchas gracias @birei/@scrutinizer!

OK, I see now what it means, even if it looks a bit strange to write [][] instead of [[]], being the inner brakes [] the two limitations of an included mached string (in the order we enounter them)... :-)
# 5  
Old 05-14-2012
Try this one..

Code:
echo "1[22[]ad[68]ads" | sed 's/\[\]/~/g' |  awk -F '[~]' '{ print $1 }'

# 6  
Old 05-15-2012
Quote:
Originally Posted by kajax
muchas gracias @birei/@scrutinizer!

OK, I see now what it means, even if it looks a bit strange to write [][] instead of [[]], being the inner brakes [] the two limitations of an included mached string (in the order we enounter them)... :-)
Switching around the square brackets is done for a reason otherwise it will not work and the brackets will be interpreted as special characters and they will need to be escaped:

Code:
$ echo 'a[b[c]d' | awk -F'[][]' '{ print $3 }' 
c
$ echo 'a[b[c]d' | awk -F'[[]]' '{ print $3 }' 

$ echo 'a[b[c]d' | awk -F'[\\[\\]]' '{ print $3 }' 
c

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

2. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

3. Shell Programming and Scripting

Awk,sed : change every 2nd field ":" to "|"

Hi Experts, I have a string with colon delimited, want 2nd colon to be changed to a pipe. data: 101:8:43:4:72:14:41:69:85:3:137:4:3:0:4:0:9:3:0:3:12:3: I am trying with sed, but can change only 1 occurance: echo "101:8:43:4:72:14:41:69:85:3:137:4:3:0:4:0:9:3:0:3:12:3:" | sed 's/:/|/2'... (5 Replies)
Discussion started by: rveri
5 Replies

4. Post Here to Contact Site Administrators and Moderators

Suggestion: adding two new groups "sed" and "awk"

Majority of the questions are pertaining file/string parsing w.r.t sed or awk It would be nice to have these two as their own sub category under shell-programming-scripting which can avoid lot of duplicate posts. (1 Reply)
Discussion started by: jville
1 Replies

5. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. Shell Programming and Scripting

Simplify Bash Script Using "sed" Or "awk"

Input file: 2 aux003.net3.com error12 6 awn0117.net1.com error13 84 aux008 error14 29 aux001.ha.ux.isd.com error12 209 aux002.vm.ux.isd.com error34 21 alx0027.vm.net2.com error12 227 dux001.net5.com error123 22 us008.dot.net2.com error121 13 us009.net2.com error129Expected Output: 2... (4 Replies)
Discussion started by: sQew
4 Replies

8. Shell Programming and Scripting

cat $como_file | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone (4 Replies)
Discussion started by: harshakusam
4 Replies

9. Shell Programming and Scripting

help for saving vertical datas to horizontal with "awk" or "cut"

hi, i have a file having datas like that ./a.txt 12344 12345 12346 12347 ..... ..... ... i want to save this datas to another file like that ./b.txt 12344 12345 12346 12347 ... ... ... i think awk can make this but how? :) waiting for ur help. (3 Replies)
Discussion started by: mercury
3 Replies

10. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question