04-20-2016
Interesting. I had a look at this and it appears this behavior is with any character, not just "@", but also for "*", "a" or "b".
I only saw this with AIX and HPUX awk..
A possible explanation for the difference between [@] and @ may be that in the POSIX specification when a single character is used as FS, then this is regarded as a string and not as a regular expression. When [c] is used (where c is a character, for example @) then this is a regular expression.
In these two awks, it appears that, if an RS other than\n is used, and a single character is used as FS then a newline is still seen as a field separator, whereas this is not the case if FS is a regular expression.
I could not find anything in the POSIX specification that describes this behavior, so it is not as it should be. It does remind me a bit of how newlines are field separators irrespective of FS value when RS="" is used, so maybe it is a remnant behavior of some sort.
Last edited by Scrutinizer; 04-20-2016 at 07:29 PM..
These 2 Users Gave Thanks to Scrutinizer For This Post:
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
I am an Awk newbie and cannot wrap my brain around my problem:
Given multi-line records of varying lengths separated by a blank line I need to skip the first two lines
of every record and extract every-other line in each record unless the first line of the record has the word "(CONT)" in the... (10 Replies)
Discussion started by: RacerX
10 Replies
2. Shell Programming and Scripting
I have a set of files of multi-line records with the records separated by a blank line. I needed to add a record number to the front of each line followed by a colon and did the following:
awk 'BEGIN {FS = "\n"; RS = ""}{for (i=1; i<=NF; i++)print NR,":",$i}' ~/Desktop/data98-1-25.txt >... (3 Replies)
Discussion started by: RacerX
3 Replies
3. Shell Programming and Scripting
Hi all,
I want to search for a data type in a line.For this in a loop i am checking for $DATA_TYPE in a line using grep.But grep is not able to find when i give this.
Can any one tell me how to check string in $DATA_TYPE variable in line usign grep (or) any other way to do the above task.
... (4 Replies)
Discussion started by: jisha
4 Replies
4. Shell Programming and Scripting
Hi.
I am reasonably new to awk, but have done quite a lot of unix scripting in the past. I have resolved the issues below with unix scripting but it runs like a dog. Moved to awk for speed and functionality but running up a big learning curve in a hurry, so hope there is some help here.
I... (6 Replies)
Discussion started by: mike.strategis
6 Replies
5. Shell Programming and Scripting
Hey there,
I have a table of contents file of the form
1 Title1
1.1 Subtitle1
1.1.1 Subsubtitle1
1.1.2 Subsubtitle2
...
and want to count the number of dots in the first field to find out the level of the section.
I use the gsub function for the job, which works if I pass the pattern... (2 Replies)
Discussion started by: herrsimon
2 Replies
6. Shell Programming and Scripting
I am trying to write a script that will help me put a file into excel with little manipulation. Below is a sample of the file im using.
Group1:*:gid1:user,user
Group2:*:gid2:user,user
Group3:*:gid3:user,user,user,user,user,user,user
Group4:*:gid4:user,user
I marked in red the part that is... (1 Reply)
Discussion started by: rookieuxixsa
1 Replies
7. UNIX for Dummies Questions & Answers
I want something that would show up basically like:
Menu
-----
1) Option 1
2) Option 2
3) Option 3
Pick one:
I tried menu = " Menu \r\n ----- \r\n 1)Option 1 \r\n..............etc etc etc"
but that didnt work (just got the whole menu one one line, with the... (2 Replies)
Discussion started by: SoVi3t
2 Replies
8. Shell Programming and Scripting
I have a file with data records separated by multiple equals signs, as below.
==========
RECORD 1
==========
RECORD 2
DATA LINE
==========
RECORD 3
==========
RECORD 4
DATA LINE
==========
RECORD 5
DATA LINE
==========
I need to filter out all data from this file where the... (2 Replies)
Discussion started by: Finja
2 Replies
9. Shell Programming and Scripting
Greetings experts,
Have 2 input files, of which 1 file has 1 record per line; in 2nd file, multiple lines constitute 1 record; Hence declared the RS=";"
Now in the first file which ends with ";" at each line of the line; But \nis also being considered as part of the data due to which
I am... (1 Reply)
Discussion started by: chill3chee
1 Replies
10. Shell Programming and Scripting
The bash bash below extracts the oldest folder from a directory and stores it in filename
That result will match a line in bold in input. In the matching line there is an_xxx digit in italics that
(once the leading zero is removed) will match a line in link. That is the lint to print in output.... (2 Replies)
Discussion started by: cmccabe
2 Replies
REGEX(3) Library Functions Manual REGEX(3)
NAME
re_comp, re_exec - regular expression handler
SYNOPSIS
char *re_comp(s)
char *s;
re_exec(s)
char *s;
DESCRIPTION
Re_comp compiles a string into an internal form suitable for pattern matching. Re_exec checks the argument string against the last string
passed to re_comp.
Re_comp returns 0 if the string s was compiled successfully; otherwise a string containing an error message is returned. If re_comp is
passed 0 or a null string, it returns without changing the currently compiled regular expression.
Re_exec returns 1 if the string s matches the last compiled regular expression, 0 if the string s failed to match the last compiled regular
expression, and -1 if the compiled regular expression was invalid (indicating an internal error).
The strings passed to both re_comp and re_exec may have trailing or embedded newline characters; they are terminated by nulls. The regular
expressions recognized are described in the manual entry for ed(1), given the above difference.
SEE ALSO
ed(1), ex(1), egrep(1), fgrep(1), grep(1)
DIAGNOSTICS
Re_exec returns -1 for an internal error.
Re_comp returns one of the following strings if an error occurs:
No previous regular expression,
Regular expression too long,
unmatched (,
missing ],
too many () pairs,
unmatched ).
3rd Berkeley Distribution May 15, 1985 REGEX(3)