【问题标题】:Sed Command not working?Sed 命令不起作用?
【发布时间】:2014-09-16 03:41:05
【问题描述】:

我在一个 unix 文件中有一个这样的表。纯文本.txt我想用 9 = cat、22 = dog 等值替换 ID 列编号。当我使用命令时

sed 's/9/cat/'

它正在用 cat 替换 9 的所有瞬间。我不能只为那一行做,因为有时 id 会匹配值中的数字。预先感谢。

Original Table 
    MAX(VALUE)  Id
     37787           9
    151326          22
    108339          24
     10069         303

期待结果表

MAX(VALUE)  Id
 37787          9 
151326          22
108339          24
 10069          303

我得到了什么

 MAX(VALUE)  Id
 37787          9 
151326          22
10833Cat        24
 1006Cat        303

第二个问题

sed 's/22/cat/' Report >> Report
sed 's/24/dog/' Report >> Report
sed 's/801/lion/' Report >> Report
sed 's/821/lion/' Report >> Report

当我使用这个命令时,它似乎打印出 4 个相同结果的表。我尝试使用 > 但没有表格出现。 any1 知道为什么吗?再次感谢 。

【问题讨论】:

    标签: unix sed


    【解决方案1】:

    要替换行尾的数字,请包含行尾锚:

    sed 's/9$/Cat/'
    

    为了防止将 19 中的 9 替换为应该去 Fish 的 Cat,从最长的 Id 编号前进到最短的编号。

    另外,不要多次调用sed,而是使用多个命令调用一次(某些语法并非在所有版本的 sed 中都得到普遍支持):

    sed 's/22$/Dog/;s/9$/Cat/'
    

    sed -e 's/22$/Dog/' -e 's/9$/Cat/'
    

    要更改文件,请使用-i

    sed -i~ 's/...//' Report
    

    (如果您的 sed 版本支持它)。无法同时写入正在阅读的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 2018-11-24
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 2014-09-27
      相关资源
      最近更新 更多