![]() |
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.
|
|
google unix.com
|
|||||||
| Forums | Register | Forum Rules | Links | Albums | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here. |
More UNIX and Linux Forum Topics You Might Find Helpful
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Accessing variables of one shell script in another shell script | rsendhilmani | Shell Programming and Scripting | 2 | 03-17-2009 01:17 AM |
| To call/execute a shell script from a shell script | konark | UNIX for Dummies Questions & Answers | 1 | 10-26-2007 05:16 PM |
| How to pass a parameter from one Shell-script to another Shell-script | subodhbansal | Shell Programming and Scripting | 2 | 09-22-2007 05:19 AM |
| How to Run a shell script from Perl script in Parent shell? | hifake | Shell Programming and Scripting | 16 | 08-28-2007 08:42 PM |
| Have a shell script call another shell script and exit | heprox | Shell Programming and Scripting | 2 | 11-20-2006 08:17 AM |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Help in shell script
Hi,
I have a requirement in which i have strings in a flat file separated by pipe character as delimiter (|) All strings are enclosed in double quotes This delimiter can also be within the data string I need to remove the double quotes from those data strings having the same delimiter within itself as the actual delimiter For eg If the flat file has strings like "abc"|"xyz"|"def|ghi" I want to keep the last string ie ""def|ghi" intact and remove the double quotes from remaining strings in the file which do not have a delimiter in between them so my o/p will now look like abc|xyz|"def|ghi" Thnx in advance |
|
||||
|
Code:
awk '
{
n = split($0,parts,"\"")
for (k = 1; k <= n; k++)
{
if( match ( parts[k] , "|" ) && length( parts[k] ) >1 )
printf("\"%s\"",parts[k]);
else
printf("%s",parts[k]);
}
printf("\n");
}' file
|
|
||||
|
Quote:
Just an alternative , in Python: Code:
all = open("input.txt").read()
t = all.split('"')
t.pop(0) #remove first element
t.pop(-1) #remove last element
for num,i in enumerate(t):
if "|" in i and i != "|":
t[num] = '"' + i + '"'
print ''.join(t)
Input.txt: "abc"|"xyz"|"def|ghi" "abc"|"def|opq"|"def|xyz" Output: Code:
c:\> python test.py abc|xyz|"def|ghi" abc|"def|opq"|"def|xyz" |
![]() |
| Bookmarks |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|