Sed命令无法正常工作?

时间:2014-07-24 14:15:04

标签: unix sed

我在unix文件中有这样的表。普通的txt。我想用诸如9 = cat,22 = dog之类的值替换ID列数字。当我使用命令

sed&#39 / s / 9 / 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知道为什么吗?再次感谢 。

1 个答案:

答案 0 :(得分:2)

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

sed 's/9$/Cat/'

为了防止19中的Cat取代9,它应该转到Fish,从最长的Id号进展到最短的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版本支持它)。写入您正在阅读的文件同时无法正常工作。