次のスクリプトは、bash:区切り文字付きの区切り文字で区切られているが、括弧で囲まれた文字列ではない場合は
は、私はそれがあるが、基本的には問題は、以下の入力で=ので、E値のように見えるとして出力されている理由は正確にはわからない:区切り文字を含む
avalue=one;bvalue=2.2.2.2;cvalue=3;dvalue=4.4.4;evalue=(HELLO:5;ABC:value=123.456);
。
| awk ' { n=split($0,pcv,";") ;
それは括弧内(発生した場合に区切るのではないために、区切り正規表現を修正する方法がある場合、私は思ったんだけど)、または前後の文字が5であっても、の、
I私はsedで入力文字列を変更してこれを行うことができますが、awkでそれを行うのが最善だと思います。
pcvtmp='avalue=one;bvalue=2.2.2.2;cvalue=3;dvalue=4.4.4;evalue=(HELLO:5;ABC:value=123.456); fvalue=five;gvalue=six;hvalue=7;ivalue=eight.8;jvalue=(HELLO:5;ABC:value2=onetwothree);kvalue=9999999;'
pcv=`echo $pcvtmp | awk ' { print $1 } ' \
| awk ' { n=split($0,pcv,";") ;
for(i=1;i<n;i++){
split(pcv[i],a1,"=");
#printf (" debug: \"%s\" | \"%s\",\n", a1[1], a1[2]);
if(a1[1]=="avalue") {printf (" a\"avalue\": \"%s\",\n" , a1[2]); continue } ;
if(a1[1]=="bvalue") {printf (" b\"bvalue\": \"%s\",\n" , a1[2]); continue } ;
if(a1[1]=="cvalue") {printf (" c\"cvalue\": \"%s\",\n" , a1[2]); continue } ;
if(a1[1]=="dvalue") {printf (" d\"dvalue\": \"%s\",\n" , a1[2]); continue } ;
if(a1[1]=="evalue") {printf (" e\"evalue\": \"%s\",\n" , a1[2]); continue } ;
if(a1[1]=="fvalue") {printf (" f\"fvalue\": \"%s\",\n" , a1[2]); continue } ;
if(a1[1]=="gvalue") {printf (" g\"gvalue\": \"%s\",\n" , a1[2]); continue } ;
if(a1[1]=="hvalue") {printf (" h\"hvalue\": \"%s\",\n" , a1[2]); continue } ;
if(a1[1]=="ivalue") {printf (" i\"ivalue\": \"%s\",\n" , a1[2]); continue } ;
if(a1[1]=="jvalue") {printf (" j\"jvalue\": \"%s\",\n" , a1[2]); continue } ;
if(a1[1]=="kvalue") {printf (" k\"kvalue\": \"%s\",\n" , a1[2]); continue } ;
}
} '`
echo "outof awk --"
echo "$pcv"
電流出力にそれを:
# ./awk1.sh
outof awk --
a"avalue": "one",
b"bvalue": "2.2.2.2",
c"cvalue": "3",
d"dvalue": "4.4.4",
e"evalue": "(HELLO:5",
期待出力
# ./awk1.sh
outof awk --
a"avalue": "one",
b"bvalue": "2.2.2.2",
c"cvalue": "3",
d"dvalue": "4.4.4",
e"evalue": "(HELLO:5;ABC:value=123.456)"
f"evalue": "five"
g"gvalue": "six"
h"hvalue": "7"
i"ivalue": "eight.8"
j"jvalue": "(HELLO:5;ABC:value2=onetwothree)"
k"kvalue" "9999999"
予想される出力は何ですか? – anubhava
検証可能なサンプルi/pを提供し、o/p – Inian
が期待される出力を編集に追加しました。見てくれてありがとう! –