2

我想从文件中搜索一个词,而不是代表该搜索我想替换该文件中的一个词。下面是文件中需要搜索和替换的内容(这是.csv文件)让文件名是test.csv-:

A,B,C,D,E
unix,123,crap,as,d
dpk,123,crap,as,d
shy,123,crap,as,d
ghn,123,crap,as,d
unnix,123,crap,as,d

以下是我正在使用的命令-:

grep -rl 'unix' test.csv | xargs sed -i 's/crap/linux/1'

此命令的输出 - :

A,B,C,D,E
unix,123,linux,as,d
dpk,123,linux,as,d
shy,123,linux,as,d
ghn,123,linux,as,d
unnix,123,linux,as,d

但我希望 sed 应该替换包含 unix 的行中的单词 crap 而不是整个文件。请在这方面提供帮助。或者有没有其他方法可以做到这一点。我想要的输出-:

A,B,C,D,E
unix,123,linux,as,d
dpk,123,crap,as,d
shy,123,crap,as,d
ghn,123,crap,as,d
unnix,123,crap,as,d
4

2 回答 2

0

但我希望 sed 应该替换不包含整个文件crap的行中的单词unix

你可以说:

sed -i '/unix/s/crap/linux/' test.csv

编辑:

如果您打算仅在 生成的过滤输出中执行替换grep,您可以说:

grep 'unix' test.csv | sed 's/crap/linux/'

为了将输出保存到文件中,请添加重定向:

grep 'unix' test.csv | sed 's/crap/linux/' > new.csv
于 2013-11-13T12:12:57.700 回答
0
perl -pi -e 's/crap/linux if(/\bunix\b/)' your_file
于 2013-11-13T12:33:58.820 回答