Linux Shell编程。实现搜索,查找和替换技术

时间:2014-03-26 14:21:05

标签: linux shell unix replace find

我必须在shell编程(Unix / Linux)中实现一个应用程序。

我必须从文本文件中搜索一个单词,并用我给定的单词替换该单词。我对shell有所了解并且还在学习。

我不期待源代码。任何人都可以帮助我或建议我或给我一些类似的解决方案......

2 个答案:

答案 0 :(得分:0)

cat abc.txt | grep "pattern" | sed 's/"pattern"/"new pattern"/g' 

以上命令应该有效

谢谢,

此致

Dheeraj Rampally

答案 1 :(得分:0)

假设您在文件pattern)中寻找input.txt,并希望将其替换为另一个文件中的"new pattern" output.txt

这是主要的想法,没有UUOC:

<input.txt sed 's/"pattern"/"new pattern"/g' >output.txt

待办事项

现在您需要在程序中嵌入此行。您可能希望将其设置为交互式,或者可以使用3个参数的命令。

修改

我试图避免使用output.txt作为临时文件:

<input.txt sed 's/"pattern"/"new pattern"/g' >input.txt

但由于我无法理解的原因,它会清空input.txt。所以我尝试了一个子shell,所以:

echo $(<input.txt sed 's/pattern/"new pattern"/g')>input.txt

...但是echo命令会删除换行符......仍然在寻找。

EDIT2

https://unix.stackexchange.com/questions/11067/is-there-a-way-to-modify-a-file-in-place开始,它看起来就像写入同一个文件一样,根本不容易。但是,我只能使用sed -i 执行我想要的操作:

sed -i 's/pattern/"new pattern"/g' input.txt

sed -i + what the same option in SOLARIS开始,看起来没有其他选择,您必须使用临时文件:

sed 's/pattern/"new pattern"/g' input.txt > input.tmp && mv input.tmp input.txt