我有一个像
这样的字符串'abc', '<<some string with space>>', 'xyz'
我想得到如下字符串: -
'abc', '<<some_string_with_space>>', 'xyz'
答案 0 :(得分:1)
您也可以使用sed
echo "'abc', '<<some string with space>>', 'xyz'" | sed s'/ /_/g;s/,_/, /g'
答案 1 :(得分:0)
只需 awk
:
s="'abc', '<<some string with space>>', 'xyz'"
awk -F', ' '{ gsub(/[[:space:]]+/,"_",$2) }1' OFS=', ' <<<"$s"
输出:
'abc', '<<some_string_with_space>>', 'xyz'
答案 2 :(得分:0)
如果您的问题涉及仅在单引号字符串_
内替换'...'
而在其他部分中替换空格的广义问题,
我会按照这个逻辑使用Perl来解决这个问题:
'...'
(使用正则表达式:'[^']+'
)_
像这样:
echo "'abc', '<<some string with space>>', 'xyz'" |\
perl -pe 'sub r { $_ = @_[0]; s/ +/_/g; return $_; }; s/'"'[^']+'"'/r($&)/ge'
答案 3 :(得分:0)
这可能适合你(GNU sed):
sed ":a;s/^\(\('[^']*',\s*\)*'[^' ]*\) /\1_/;ta" file
或者更安全:
sed ':a;s/^\(\('\''[^'\'']*'\'',\s*\)*'\''[^'\'' ]*\) /\1_/;ta' file
答案 4 :(得分:-1)
使用awk的gsub和正则表达式来替换空白字符。
mystr = "my sentence is this!"
gsub(/\s/,"_",mystr)
print mystr