Sponsored Content
Top Forums UNIX for Advanced & Expert Users awk function in handling quotes Post 302446134 by agama on Wednesday 18th of August 2010 12:26:19 AM
Old 08-18-2010
Your request for help is a bit confusing. I'm assuming that you want to take a string with comma separated values and convert the values into bar separated fields. Further, if the field is quoted, then it may contain commas which do not indicate a field. Thus:

Code:
"hello","how are you",doing?,are,you,"at,home,tonight","this,is a,test","of the system"

would be translated to:
Code:
hello|how are you|doing?|are|you|at,home,tonight|this,is a,test|of the system

If that is what you are looking for, then this sed programme will do it:

Code:
sed -E '
s/^([^",]+)/"\1"/;    # edit -- enables processing of your original file
s/^"/</;
s/"$/>/;
s/","/></g;
s/",/>/g;
s/,"/</g;
s/>([^<,]+)/><\1>/;
: try_again
s/>,([^,<]+)/><\1>/;ttry_again
s/></|/g;
s/^<//;
s/>$//'

It does not handle input with < or > characters. If you are not using a BSD or AT&T AST version of sed, then you'll need to replace -E with -r on the command.

Edit -- with small change, the original input you presented can be processed and passed to awk or other programme:

Code:
$cat t17a.data
311,"jone,abc",2000,manager
302,david,200,"president,ac"
"303",david,200,"vicepresident,ac"
"304",Charlie,400,"peon"


$t17 <t17a.data
311|jone,abc|2000|manager
302|david|200|president,ac
303|david|200|vicepresident,ac
304|Charlie|400|peon


Last edited by agama; 08-18-2010 at 01:40 AM..
 

10 More Discussions You Might Find Interesting

1. Programming

signal handling while in a function other than main

Hi, I have a main loop which calls a sub loop, which finally returns to the main loop itself. The main loop runs when a flag is set. Now, I have a signal handler for SIGINT, which resets the flag and thus stops the main loop. Suppose I send SIGINT while the program is in subloop, I get an error... (1 Reply)
Discussion started by: Theju
1 Replies

2. Shell Programming and Scripting

column handling in awk

Dear Scripting experts, I have a problem which i cannot get my head around and wondered if anyone can help me. I have two files "file1" and "file2" and i want to replace column one from file 1 with column one with file2.(where file two has many columns). see example.. ive tried to use cut and... (4 Replies)
Discussion started by: Mish_99
4 Replies

3. Programming

Handling a signal with a class member function

Hello, i am using the sigaction function to handle the SIGCHLD signal.Is it possible to use a class member function as the handler function (the sa_handler member of the sigaction structure)? The function's signature is: void (*sa_handler)(int);so i don't think i can use a static member function... (2 Replies)
Discussion started by: Zipi
2 Replies

4. Shell Programming and Scripting

Handling multiple fields of a database file for toupper() function in awk

hello everyone.... script is: To convert the contents of a database file into uppercase my code is: printf "%s\n" , $2 | awk '{print toupper($2)}' emp.lst i m able to do only for one field.....didn't get any sources for handling multiple fields. please suggest me for multiple... (1 Reply)
Discussion started by: Priyanka Bhati
1 Replies

5. Shell Programming and Scripting

quotes using awk

i want to print the statement below using awk,but i am unable to get the quotes ("22345",1,"Thank you"); How can i do this (5 Replies)
Discussion started by: tomjones
5 Replies

6. Shell Programming and Scripting

handling arrays with awk

Hi, I have an issue that I am trying to resolve using arrays in awk. I have two files, the first one is a dictionary with this format: FILE 1 (dictionary) 'Abrir' 'Open' 'Aceptar' 'Accept' Every line has two fields, a word in two languages. The second file is a simple list of... (3 Replies)
Discussion started by: gmartinez
3 Replies

7. Shell Programming and Scripting

awk without quotes

I want to execute awk command without quotes. who am i | awk {'print $2'} above code should be something like: who am i | awk {print $2} Why such weird requirement? Im assigning command to a variable, hence i need to escape the quotes. e.g: x='who am i | awk {\'print $2\'}' I want... (11 Replies)
Discussion started by: Arun_Linux
11 Replies

8. Shell Programming and Scripting

Handling embedded double quotes within column data

I have a text file where each field is enclosed in double quotes and separated by a comma. But in certain rows we have embedded double quotes within column data For e.g """TRUSPICE CENTRE"" CLAYTON AU" The above value is for a single column but there are embedded quotes within... (2 Replies)
Discussion started by: abhilashnair
2 Replies

9. Shell Programming and Scripting

Using quotes in awk

Hello, i had a problem running a script , and after investigation found its all to do with the quotes: cat file1 line1 val1 val2 line2 val1 val2 line3 val1 val2 awk 'BEGIN {RS="\n\n"; FS="\n";} {print $1 $2}' file1 This gives me the wrong output: (5 Replies)
Discussion started by: andy391791
5 Replies

10. Shell Programming and Scripting

Need help on awk for printing the function name inside each function

Hi, I am having script which contains many functions. Need to print each function name at the starting of the function. Like below, functionname() { echo "functionname" commands.... } I've tried like below, func=`grep "()" scriptname | cut -d "(" -f1` for i in $func do nawk -v... (4 Replies)
Discussion started by: Sumanthsv
4 Replies
PAM_SUCCEED_IF(8)						     Linux-PAM							 PAM_SUCCEED_IF(8)

NAME
pam_succeed_if - test account characteristics SYNOPSIS
pam_succeed_if.so [flag...] [condition...] DESCRIPTION
pam_succeed_if.so is designed to succeed or fail authentication based on characteristics of the account belonging to the user being authenticated. One use is to select whether to load other modules based on this test. The module should be given one or more conditions as module arguments, and authentication will succeed only if all of the conditions are met. OPTIONS
The following flags are supported: debug Turns on debugging messages sent to syslog. use_uid Evaluate conditions using the account of the user whose UID the application is running under instead of the user being authenticated. quiet Don't log failure or success to the system log. quiet_fail Don't log failure to the system log. quiet_success Don't log success to the system log. audit Log unknown users to the system log. Conditions are three words: a field, a test, and a value to test for. Available fields are user, uid, gid, shell, home and service: field < number Field has a value numerically less than number. field <= number Field has a value numerically less than or equal to number. field eq number Field has a value numerically equal to number. field >= number Field has a value numerically greater than or equal to number. field > number Field has a value numerically greater than number. field ne number Field has a value numerically different from number. field = string Field exactly matches the given string. field != string Field does not match the given string. field =~ glob Field matches the given glob. field !~ glob Field does not match the given glob. field in item:item:... Field is contained in the list of items separated by colons. field notin item:item:... Field is not contained in the list of items separated by colons. user ingroup group User is in given group. user notingroup group User is not in given group. user innetgr netgroup (user,host) is in given netgroup. user notinnetgr group (user,host) is not in given netgroup. MODULE TYPES PROVIDED
All module types (account, auth, password and session) are provided. RETURN VALUES
PAM_SUCCESS The condition was true. PAM_AUTH_ERR The condition was false. PAM_SERVICE_ERR A service error occurred or the arguments can't be parsed correctly. EXAMPLES
To emulate the behaviour of pam_wheel, except there is no fallback to group 0: auth required pam_succeed_if.so quiet user ingroup wheel Given that the type matches, only loads the othermodule rule if the UID is over 500. Adjust the number after default to skip several rules. type [default=1 success=ignore] pam_succeed_if.so quiet uid > 500 type required othermodule.so arguments... SEE ALSO
glob(7), pam(7) AUTHOR
Nalin Dahyabhai <nalin@redhat.com> Linux-PAM 06/04/2011 PAM_SUCCEED_IF(8)
All times are GMT -4. The time now is 06:16 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy