【问题标题】:Using gsub to replace a double quote with two double quotes?使用 gsub 用两个双引号替换一个双引号?
【发布时间】:2012-12-13 22:59:25
【问题描述】:

我正在尝试在 awk 中编写一个脚本,该脚本(除其他外)将所有双引号实例替换为两个连续的双引号。但是由于某种原因,我似乎无法正确地转义我的双引号。

例如:

Mary had a "little" lamb

会变成

Mary had a ""little"" lamb

非常感谢!

【问题讨论】:

    标签: awk


    【解决方案1】:

    你可以这样做:

    echo 'Mary had a "little" lamb' | awk '{ gsub(/"/, "&&") } 1' 
    

    输出:

    Mary had a ""little"" lamb
    

    最后的1 调用awk 的默认块{ print $0 }

    使用 sed 会更短:

    echo 'Mary had a "little" lamb' | sed 's/"/&&/g'
    

    【讨论】:

    • 啊,这很有趣。作为一个更一般的 AWK 问题,AWK 是将整个文件缓冲到内存中,然后执行操作,还是仅在每行的基础上运行?我想我想说的是,在内存方面昂贵吗? (我还不能批准你的回答 - 我必须等待 5 分钟。)
    • @user1116858: awk 只在内存中保存一条记录,默认情况下一条记录是一行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 2014-10-05
    • 2018-05-18
    • 2018-09-23
    • 1970-01-01
    相关资源
    最近更新 更多