我必须在shell编程(Unix / Linux)中实现一个应用程序。
我必须从文本文件中搜索一个单词,并用我给定的单词替换该单词。我对shell有所了解并且还在学习。
我不期待源代码。任何人都可以帮助我或建议我或给我一些类似的解决方案......
答案 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
命令会删除换行符......仍然在寻找。
从https://unix.stackexchange.com/questions/11067/is-there-a-way-to-modify-a-file-in-place开始,它看起来就像写入同一个文件一样,根本不容易。但是,我只能使用sed -i
linux执行我想要的操作:
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