我想从文件中搜索一个单词,而不是代表该搜索,我想替换该文件中的单词。 下面是搜索和替换必须完成的文件中的内容(这是.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
答案 0 :(得分: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
答案 1 :(得分:0)
perl -pi -e 's/crap/linux if(/\bunix\b/)' your_file