的Unix shell - 替换字符串

weixin_38053353 2019-09-12 04:06:51

空白的所有发生的最好的方式,我有一个像 'abc', '<<some string with space>>', 'xyz' 字符串我希望得到一个字符串象下面这样: - 'abc', '<<some_string_with_space>>', 'xyz'








...全文
106 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38058086 2019-09-12
  • 打赏
  • 举报
回复

只需使用awk : s="'abc', '<<some string with space>>', 'xyz'" awk -F', ' '{ gsub(/[[:space:]]+/,"_",$2) }1' OFS=', ' <<<"$s" 输出: 'abc', '<<some_string_with_space>>', 'xyz'
weixin_38066392 2019-09-12
  • 打赏
  • 举报
回复

使用awk的gsub和正则表达式\ s来替换空格字符。 mystr = "my sentence is this!" gsub(/\s/,"_",mystr) print mystr
weixin_38067080 2019-09-12
  • 打赏
  • 举报
回复

如果你的问题涉及更换空间的广义问题_里面只有单引号字符串'...'而不是在其他地方, 我想解决这个使用Perl,按照这样的逻辑: 对于输入的每个'...'(使用正则表达式:'[^']+') 执行替换所有空间用_的函数 像这样: echo "'abc', '<<some string with space>>', 'xyz'" |\ perl -pe 'sub r { $_ = @_[0]; s/ +/_/g; return $_; }; s/'"'[^']+'"'/r($&)/ge'
weixin_38067871 2019-09-12
  • 打赏
  • 举报
回复

您可以使用SED太 echo "'abc', '<<some string with space>>', 'xyz'" | sed s'/ /_/g;s/,_/, /g'
weixin_38077401 2019-09-12
  • 打赏
  • 举报
回复

这可能为你工作(GNU SED): sed ":a;s/^\(\('[^']*',\s*\)*'[^' ]*\) /\1_/;ta" file 或许更安全: sed ':a;s/^\(\('\''[^'\'']*'\'',\s*\)*'\''[^'\'' ]*\) /\1_/;ta' file

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧