sed:从数字中删除引号

时间:2018-02-24 12:14:52

标签: bash sed

我正在解析一个如下所示的CSV文件:

$('#math').click(function(e){
    e.preventDefault();
    $("#result").html("$$ \\text{MathJax inside .click event works!} $$");
    MathJax.Hub.Queue(['Typeset',MathJax.Hub,'result']);  // <-- YOU NEED THIS
});
 
//outside .click event
$("#Outside").html("$$ \\frac{d}{dx}\\left(2x^2\\right)=\\:4x $$");

应该引用分隔的唯一列是第二列(例如<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML'></script> <button id="math" type="submit" > <b>ShowMathjax On click</b> </button> <span id="result"></span> <div style="padding:10%;"> MathJax Outside .click event works: <span id="Outside"></span> </div>999,"FOO",0.00249,0.00249,0.00249,0.0000,1,1 888,"BAR",0.00249,0.00249,0.00249,0.0000,1,1 777,"FOOBAR",0.00999,0.00999,0.00999,0.0000,1,1 666,"ABC",0.00999,0.00999,0.00999,0.0000,1,1 555,"DEF","-0.00100","-0.00100","-0.00100",0.0000,1,1 444,"EFG","-0.00100","-0.00100","-0.00100",0.0000,1,1 等)。其他列始终被解释为数字。

正如您在上面的示例中所看到的,第555行和第444行的引号为"FOO"

因此,我希望从数值周围删除引号。

我在这里对Stackoverflow做了一些研究并确定了以下内容: https://stackoverflow.com/a/18624948/4474629

我试图改编它:

"BAR"

但输出仍然打印?

"-0.00100"

预期结果是:

column -t -s,  | sed s/"(-?\d[\d.]*)"/\1/g | more

2 个答案:

答案 0 :(得分:2)

如果查看the sed manual,您会发现(?\d)都不受支持。您使用perl链接的问题,这些构造在哪里工作。

您可以调整脚本:

sed 's/"\(-\?[0-9][0-9.]*\)"/\1/g'

(使用单引号来防止shell对特殊字符的解释)。

甚至\?是GNU扩展名;如果你的sed不支持,你可能不得不使用-\{0,1\}

答案 1 :(得分:0)

这可能适合你(GNU sed):

sed 's/"//3g' file

仅引用第二列,因此应该只有2个双引号,其他任何一个都应该删除。