I have a comma separated file which contains data like;
File header:
File Detail:
I want to enclose all those strings within single quotes which contain alphanumeric characters. I do not want to enclose data which contain numbers only. For example;
I wrote below command which is working for 1st row but it do not work when I am adding more fields, like 2nd, 3rd etc. rows have more alphanumeric data.
I am looking for a command which recognize the alphanumeric values and enclose the string with single quote, recursively.
When you show us a command that you've used to try to get something to work, we generally expect to see a command name somewhere. All that you showed us is a something that might be an ed, ex, or sed substitute command. Obviously, a shell can't interpret an editor substitute command without knowing what utility you want to use to interpret that command.
I generally find awk easier to work with when I'm dealing with a varying number of fields and there is no reason to believe that the same fields in all lines will meet the same criteria. I'm also not sure why you bothered to show us a file header when it doesn't appear anywhere in your sample input files nor in your desired output. But, if one had a file named file that contained:
and one had a script similar to:
one might get output similar to:
if one ran that script in the directory containing that file.
Is that what you were trying to do?
And, of course, since you didn't bother telling us what operating system and shell you're using, one should note that if you want to try this on a Solaris/SunOS system, you'll need to change awk in that script to /usr/xpg4/bin/awk or nawk. This was tested using a Korn shell, but should work with any shell that is based on Bourne shell syntax. (Who knows, it might even work with csh or one of its derivatives.)
I am not 100% sure if every sed understands this form of character-encoding. Here is a solution which may look a bit longer but will work with every sed:
I get the notion from your own script that you want to exclude the first line (header) from the processing. If so, modify the above like this:
Also notice that you may want to not repeat the operation if there are already single quotes in place, i.e. you may want to transform
but probably not want this:
and instead leave it unchanged. If this is the case you should change the sed-script this way:
You may want to trim trailing blanks first, otherwise you might get this (blanks encoded as "<b>"):
which is probably not what you want. Therefore a last modification (replace "<b>" and "<t>" with literal blanks/tabs) :
I hope this helps.
bakunin
These 2 Users Gave Thanks to bakunin For This Post:
I have a variable that contains the following string:
FPATH=-rw-rw-r-- 1 user1 dba 0 Aug 7 13:14 /app/F11.3/app/cust/exe/filename1.exe' -rw-rw-r-- 1 user1 dba 0 Aug 19 10:09 /app/app/F11.3/app/cust/sql/33211.sql' -rw-r--r-- 1 user1 dba 0 Aug 6 17:20 /app/F11.2/app/01/mrt/file1.mrt'
I... (7 Replies)
From:
1,2,3,4,5,This is a test
6,7,8,9,0,"This, is a test"
1,9,2,8,3,"This is a ""test"""
4,7,3,1,8,""""
To:
1,2,3,4,5,This is a test
6,7,8,9,0,"This; is a test"
1,9,2,8,3,"This is a ''test''"
4,7,3,1,8,"''"Is there an easy syntax I'm overlooking? There will always be an odd number... (5 Replies)
Hi Froum.
I have tried in vain to find a solution for this problem - I'm trying to replace any double quotes within a quoted string with a single quote, leaving everything else as is.
I have the following data:
Before:
... (32 Replies)
Hi all,
My file :test.txt just like this:
...........................
From: 333:123<sip:88888888888@bbbb.com
To: <sip:123456@aaaaa.com
.........................
I want a script to capture the string between sip: & @
Expect output:
88888888888
123456
Please help! (4 Replies)
I have a script which I call and pass a text string to it. This string is then is assigned to a variable in the script. I then call another script and pass that variable to the second script, but when I do, the quotes are lost and the second script gets a total of three variables 'my', 'lovely' and... (3 Replies)
hi all,
i have a data in the file which of the formate :
100,102,103
and the required formate is
\'100\',\'102\',\'103
Idealy we need to replace , with \',\'
Regards
arkesh (2 Replies)
Hi I want to replace single quote with two single quotes in a perl string.
If the string is <It's Simpson's book> It should become <It''s Simpson''s book> (3 Replies)
Hi,
I have variable inside shell script - from_item.
from_item = 40.1'1/16
i have to first find out whether FROM_ITEM contains single quote(').
If yes, then that need to be replace with two quotes ('').
How to do it inside shell script? Please note that inside shell script........ (4 Replies)
Hi,
I've been trying to write a regex to use in egrep (in a shell script) that'll fetch the names of all the files that match a particular pattern. I expect to match the following line in a file:
Name = "abc"
The regex I'm using to match the same is:
egrep -l '(^) *= *" ** *"$' /PATH_TO_SEARCH... (6 Replies)
Hi
I have a shell script with many lines as below:
comment on column dcases.proj_seq_num is dcases_1sq;
....
....
I want the above script to be as below:
comment on column dcases.proj_seq_num is 'dcases_1sq';
I want to have single quotes like that as above for the entire shell... (2 Replies)