【问题标题】:remove comma from last line从最后一行删除逗号
【发布时间】:2017-09-12 17:58:22
【问题描述】:

如何删除文件最后一行的逗号? 这是文件:

# cat ox_data_archive_r_20120727.json
{"name": "secondary_ua","type":"STRING"},
{"name": "request_ip","type":"STRING"},
{"name": "cb","type":"STRING"},

以下内容将从所有 3 行中删除逗号。

# sed 's/,$/\ /' ox_data_archive_r_20120727.json
{"name": "secondary_ua","type":"STRING"}
{"name": "request_ip","type":"STRING"}
{"name": "cb","type":"STRING"}

我只需要删除最后一个逗号。所以输出应该是这样的......

# cat newfile.json
{"name": "secondary_ua","type":"STRING"},
{"name": "request_ip","type":"STRING"},
{"name": "cb","type":"STRING"}

【问题讨论】:

    标签: sed awk grep


    【解决方案1】:
    $ cat input.txt
    {"name": "secondary_ua","type":"STRING"},
    {"name": "request_ip","type":"STRING"},
    {"name": "cb","type":"STRING"},
    $ sed '$s/,$//' < input.txt
    {"name": "secondary_ua","type":"STRING"},
    {"name": "request_ip","type":"STRING"},
    {"name": "cb","type":"STRING"}
    

    来自GNU sed的文档:

    $:此地址匹配输入的最后一个文件的最后一行,或指定-i-s 选项时每个文件的最后一行。

    【讨论】:

    • Mac 和 Unix 用户注意:这也适用于 BSD sed。
    • 适合我。很好的答案!
    【解决方案2】:

    这应该可行:

    sed '$ s/,$//g' input_file
    
    • 第一个$ 选择最后一行。

    您可以添加-ised 会将更改应用到您的input_file

    【讨论】:

      【解决方案3】:

      awk 的答案肯定比 sed 更冗长:

      awk 'NR>1 {print prev} {prev=$0} END {sub(/,$/,"", prev); print prev}' file
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-03
        • 1970-01-01
        • 1970-01-01
        • 2013-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多