【问题标题】:Linux Shell Programming. Implementing a Search, Find and Replace TechniqueLinux Shell 编程。实现搜索、查找和替换技术
【发布时间】:2014-03-26 14:21:04
【问题描述】:

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

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

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

【问题讨论】:

  • 例如,您可以使用grep 在文件中查找文本,find 查找文件,sed 用于替换。检查每个人的手册页(man grepman sed...)。
  • embedded-linux 似乎是这个问题的一个奇怪标签,linux-kernel
  • 你想看看 sed,尤其是它的 s 命令。

标签: linux shell unix replace find


【解决方案1】:
cat abc.txt | grep "pattern" | sed 's/"pattern"/"new pattern"/g' 

上面的命令应该可以工作

谢谢,

问候,

Dheeraj Rampally

【讨论】:

【解决方案2】:

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

这里是主要思想,没有 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 命令删除了换行符...仍在寻找。


编辑2

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

【讨论】:

    猜你喜欢
    • 2012-12-25
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多