【问题标题】:sed command to add text for only last line in unixsed 命令只为 unix 中的最后一行添加文本
【发布时间】:2014-12-05 13:31:13
【问题描述】:

我想要只在最后一行添加逗号的 sed 命令 例如 我有包含

的文本文件
"872709"
"872700"
"145"
"872808B"
"8729029921"
"879B"
"87290"
"AirHo9"
"Ait22"
"DVDSept22"
"Gr929"

想在最后一行加逗号

"872709"
"872700"
"145"
"872808B"
"8729029921"
"879B"
"87290"
"AirHo9"
"Ait22"
"DVDSept22"
"Gr929",

【问题讨论】:

    标签: regex bash unix sed sh


    【解决方案1】:

    你可以使用sed:

    sed '$s/$/,/' file
    "872709"
    "872700"
    "145"
    "872808B"
    "8729029921"
    "879B"
    "87290"
    "AirHo9"
    "Ait22"
    "DVDSept22"
    "Gr929",
    

    要使其保存更改内联使用:

    sed -i.bak '$s/$/,/' file
    

    【讨论】:

      【解决方案2】:
      sed -r '$ s/([a-zA-Z0-9"]*)/\1,/' inputfile
      

      $ 计算文件中的最后一行

      ([a-zA-Z0-9"]* 匹配字符数字或 ",匹配的模式保存在 \1 反向引用中。

      \1, 是数学模式 + 逗号,这是替代模式

      测试

      "872709"
      "872700"
      "145"
      "872808B"
      "8729029921"
      "879B"
      "87290"
      "AirHo9"
      "Ait22"
      "DVDSept22"
      "Gr929",
      

      【讨论】:

      • 整行不用替换。
      • @tripleee 仍处于学习模式。另一个答案很甜蜜。感谢更新
      【解决方案3】:

      无需使用 sed:

      echo -n ',' >> file 
      

      【讨论】:

      • 如果文件的最后一行以换行符结尾,则不会执行所请求的操作,因为它很可能会这样做。 -n 开关将防止在逗号 之后添加换行符,但需要的是在 之前 和之后都没有换行符。
      猜你喜欢
      • 1970-01-01
      • 2011-01-31
      • 2023-03-31
      • 2012-05-22
      • 2017-12-21
      • 2016-11-06
      • 2016-03-16
      • 1970-01-01
      相关资源
      最近更新 更多