我在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知道为什么吗?再次感谢 。
答案 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版本支持它)。写入您正在阅读的文件同时无法正常工作。