sed用单引号代替反斜杠双引号

  • 本文关键字:单引号 sed bash sed
  • 更新时间 :
  • 英文 :


我想采取以下措施:

echo "'{"apiVersion":"apps/v1", "kind":"two"}'"

并通过使用SED结束以下内容:

{'apiVersion':'apps/v1', 'kind':'two'}

使用Bash的字符串替换:

#!/usr/bin/env bash
a='{"apiVersion":"apps/v1", "kind":"two"}'
# Replaces all occurrences of " with '
b=${a//\"/'}
# Debug prints converted string
printf '%sn' "$b"
echo '{"apiVersion":"apps/v1", "kind":"two"}'| tr -d '\'|tr '"' "'"
echo '{"apiVersion":"apps/v1", "kind":"two"}'| sed "s/."/'/g"
echo '{"apiVersion":"apps/v1", "kind":"two"}'| awk '{gsub(/\"/, "47"); print}'
{'apiVersion':'apps/v1', 'kind':'two'}

update (new string)

echo "'{"apiVersion":"apps/v1", "kind":"two"}'"| tr -d "'"|tr '"' "'"
echo "'{"apiVersion":"apps/v1", "kind":"two"}'"| sed "s/'//g; s/"/'/g"
echo "'{"apiVersion":"apps/v1", "kind":"two"}'"| awk '{gsub(/47/, ""); gsub(/"/, "47"); print}'
{'apiVersion':'apps/v1', 'kind':'two'}
{'apiVersion':'apps/v1', 'kind':'two'}
{'apiVersion':'apps/v1', 'kind':'two'}

UPDATE 1:如果你坚持使用sed,那么它是:

echo '{"apiVersion":"apps/v1", "kind":"two"}' |

sed -E 's/\["]/x27/g'   
# BSD-sed
{'apiVersion':'apps/v1', 'kind':'two'}
echo '{"apiVersion":"apps/v1", "kind":"two"}' |

gsed -E 's/\["]/x27/g'   
# GNU-sed
{'apiVersion':'apps/v1', 'kind':'two'}

===============================

UPDATE 2:如果你不习惯在awk中处理八进制代码,那么它是

gawk -e 'NF++~—-NF' FS='\\"' OFS="'" 
{'apiVersion':'apps/v1', 'kind':'two'}

===============================

相对便携的基于awk的解决方案

echo '{"apiVersion":"apps/v1", "kind":"two"}' | 
gawk      NF=NF FS='\\42' OFS='47'
{'apiVersion':'apps/v1', 'kind':'two'}
echo '{"apiVersion":"apps/v1", "kind":"two"}' | 
gawk -Pe  NF=NF FS='\\42' OFS='47'
{'apiVersion':'apps/v1', 'kind':'two'}
echo '{"apiVersion":"apps/v1", "kind":"two"}' | 
gawk -ce  NF=NF FS='\\42' OFS='47'
{'apiVersion':'apps/v1', 'kind':'two'}
echo '{"apiVersion":"apps/v1", "kind":"two"}' |
mawk      NF=NF FS='\\42' OFS='47'
{'apiVersion':'apps/v1', 'kind':'two'}
echo '{"apiVersion":"apps/v1", "kind":"two"}' | 
mawk2     NF=NF FS='\\42' OFS='47'
{'apiVersion':'apps/v1', 'kind':'two'}

最新更新