开发者社区> 问答> 正文

shell 脚本给逗号分隔的内容添加双引号

有個文件 a,其內容為:

1, 2, 3
$ head a
1, 2, 3
想把上面的文件转成如下的格式 用于 sql 条件查询中:

"1","2","3"
利用 awk 試了以下三種方式:

#多出了一个空行
$ awk -v 'RS= ' {print} a
1,
2,
3
#想通过这种方式删除空行 失败
$ awk -v 'RS= ' '{gsub(/^$/,"");print}' a
1,
2,
3
#3后面有个换行
$ awk -v 'RS= ' 'ORS=","{gsub(/,$/,"");print "\""$0"\""}' a
"1","2","3
",%

不知道有没更好的方式实现此功能?

展开
收起
a123456678 2016-06-28 14:15:16 3369 0
1 条回答
写回答
取消 提交回答
  • ruby -e 'print $_.gsub(/d/){|i| %("#{i}")} while gets' a
    解释:

    1, ruby -e执行后面字串命令
    2, $_表示gets的内容
    3, gsub用于字串匹配替换
    4, %(...), 用于生成字串, 否则要""#{i}"", 比较难看
    5, gets, 会读入标准输入, 或文件
    
    或更简单的使用sed:
    
    sed 's,\([0-9]\),"\1",g' a
    解释:
    1, sed默认对文件的每一行执行动作
    2, s表示进行文本替换
    3, ,为分隔符, 可以是;, /, !等
    4, \(...\)表示正则表达式的'组', 以方便后面的\1进行反向引用
    5, [0-9]匹配数字
    6, g表示替换所有匹配
    2019-07-17 19:48:15
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Shell 脚本速查手册 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载