我有數據逗號分隔值單倒引號和逗號分隔值
abc,defg,hijklm,op,qrs,tuv
我想這個數據轉換爲
'abc','defg','hijklm','op','qrs','tuv'
我想在linux下做的。我用「sed」。我一直在尋找所有的互聯網,但沒有遇到一個解決方案。請幫幫我。
我有數據逗號分隔值單倒引號和逗號分隔值
abc,defg,hijklm,op,qrs,tuv
我想這個數據轉換爲
'abc','defg','hijklm','op','qrs','tuv'
我想在linux下做的。我用「sed」。我一直在尋找所有的互聯網,但沒有遇到一個解決方案。請幫幫我。
在開始添加一個單引號(^
)&末($
),並通過報價逗號引號代替逗號(像你這樣),使用3個表達式(使用-e
選項來指定它們)的sed:
echo abc,defg,hijklm,op,qrs,tuv | sed -e "s/^/'/" -e "s/\$/'/" -e "s/,/',\'/g"
(也:保護帶雙引號單引號)
結果:
'abc','defg','hijklm','op','qrs','tuv'
在awk
(也許有點笨拙),通常更好地awk
因爲場解析是本地處理:
echo abc,defg,hijklm,op,qrs,tuv | awk -F, "{for (i=1;i<=NF-1;i++) printf(\"'%s',\",\$i); printf(\"'%s'\",\$i);}"
(打印所有字段以及除了最後一個逗號)
使用awk
gsub
功能。這裏所有的「,
」被替換爲','
並且開始並且行的末尾被替換爲「'
」。
echo $x |awk -v q="'" '{gsub(/,/, q "&" q);gsub(/^|$/,q)}1'
'abc','defg','hijklm','op','qrs','tuv'
awk '{gsub(/,/,"\47,\47");print "\47"$0"\47"}' file
'abc','defg','hijklm','op','qrs','tuv'
另一awk
$ awk -F, -v OFS="','" -v q="'" '{$1=q $1; print $0 q}' file
我會用'awk'。 – GMichael
如果你的例子反映了你的輸入的** EXACT **結構,用''''替換所有'''可能會更簡單,然後在開始和結尾添加一個附加的'''。 – FDavidov
我做了這個 | sed's /,/','/' 但它不起作用 – vkrishna