echo "Kindly insert the name:- "
read name
perl -i -wlanF'\:' -e '$F[2] =~ s/yes/no/i or $F[2] =~ s/no/yes/i if $F[0] eq "'$name'" ;$"=":" ; print "@F" ; ' infile.txt
BR
DONE!!!! Thanks
---------- Post updated at 10:36 AM ---------- Previous update was at 10:34 AM ----------
Quote:
Originally Posted by kshji
This solution is much more as you need, previous awk solutions are enough.
This is example template how to parse csv style file using first line = name of variables.
After parsing you can use column value using variable name. Of course you need some error checking and so on, but some simple template to start.
Code:
#!/bin/ksh or bash
cat<<EOF > $0.txt
name:age:girlfriend
aa:11:yes
bb:22:yes
cc:33:no
dd:44:no
ee:55:yes
ff:44:
:44:no
aa:55:no:xx:zz
EOF
lastfld=0
flds[0]=""
val[0]=""
oifs="$IFS"
deli=":"
#####################################
setvar()
{
str="$*"
IFS="$deli"
val=($str)
IFS="$oifs"
last=${#val[@]}
f=0
while (( f<=last && f<=lastfld ))
do
var="${flds[$f]}"
value="${val[$f]}"
eval $var=\"$value\"
((f+=1))
done
}
#####################################
showvar()
{
f=0
outstr=""
de="$deli"
while ((f<=lastfld))
do
var="${flds[$f]}"
eval value=\""\$$var"\"
(( f == lastfld )) && de=""
outstr="$outstr$value$de"
((f+=1))
done
echo "$outstr"
}
#####################################
clrvar()
{
f=0
while (( f <= lastfld ))
do
var="${flds[$f]}"
eval $var=\"\"
export $var
((f+=1))
done
}
#####################################
colnames()
{
str="$*"
IFS="$deli"
flds=($str)
IFS="$oifs"
lastfld=${#flds[@]}
((lastfld-=1))
}
#####################################
# MAIN #
lineno=0
cat $0.txt | while read line
do
((lineno+=1))
(( lineno == 1 )) && colnames "$line" && continue
clrvar # clear all variables before new values
setvar "$line"
# after line parsing you can use variables
case "$name" in
cc) girlfriend=yes ;;
esac
showvar
done
Keywords: csv ksh bash csv parser
Wow GREAT! I will use this for another porpose in my program thanks!
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)
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)
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)
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)
I have a bunch of random character lines like ABCEDFG. I want to find all lines with "A" and then change any "E" to "X" in the same line. ALL lines with "A" will have an "X" somewhere in it. I have tried sed awk and vi editor. I get close, not quite there. I know someone has already solved this... (10 Replies)
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)
These three finds worked as expected:
$ find . -iname "*.PDF"
$ find . -iname "*.PDF" \( ! -name "*_nobackup.*" \)
$ find . -path "*_nobackup*" -prune -iname "*.PDF"
They all returned the match:
./folder/file.pdf
:b:
This find returned no matches:
$ find . -path "*_nobackup*" -prune... (3 Replies)
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)
Hi 2 all,
i have had AIX 7.2
:/# /usr/IBMAHS/bin/apachectl -v
Server version: Apache/2.4.12 (Unix)
Server built: May 25 2015 04:58:27
:/#:/# /usr/IBMAHS/bin/apachectl -M
Loaded Modules:
core_module (static)
so_module (static)
http_module (static)
mpm_worker_module (static)
... (3 Replies)