Unix Sed命令不工作?

Unix Sed命令不工作?,unix,sed,Unix,Sed,我在unix文件中有这样一个表。普通文本。我想用诸如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 期望

我在unix文件中有这样一个表。普通文本。我想用诸如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个相同结果的表。我尝试使用>但是没有显示任何表。谁知道为什么?再次感谢

要替换线端的数字,请包括线端锚:

sed 's/9$/Cat/'
为了防止将9替换为应该用于Fish的Cat in 19,请从最长的Id号改为最短的Id号

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

要就地更改文件,请使用
-i

sed -i~ 's/...//' Report
(如果您的sed版本支持)。同时写入正在读取的文件不起作用

sed -e 's/22$/Dog/' -e 's/9$/Cat/'
sed -i~ 's/...//' Report