linux - echo 全局替换的解决方案

标签 linux shell sed awk grep

如何将我所有 ksh 脚本中的 echo 替换为 echo -e。 示例:

输入

包含以下行的脚本,

echo "\nE-MAILING TO INTERESTED PARTIES....\n"
set echo off
echo -e "\nE-MAILING TO INTERESTED PARTIES....\n"

输出:

我不应该打扰 set echo off 命令,只更改打印 echo 命令。如果已经改成了echo -e,我就不应该再替换了。对于根目录中的所有脚本,我应该一次性替换它。

echo -e "\nE-MAILING TO INTERESTED PARTIES....\n"
set echo off
echo -e "\nE-MAILING TO INTERESTED PARTIES....\n"

最佳答案

这应该可行 -

sed 's/^echo "/echo -e "/' filename

测试:

[jaypal:~/Temp] cat tmp
echo "\nE-MAILING TO INTERESTED PARTIES....\n"
set echo off
echo -e "\nE-MAILING TO INTERESTED PARTIES....\n"
[jaypal:~/Temp] sed 's/^echo "/echo -e "/' tmp
echo -e "\nE-MAILING TO INTERESTED PARTIES....\n"
set echo off
echo -e "\nE-MAILING TO INTERESTED PARTIES....\n"

查找执行:

find /path/to/directory/ -type f -name "*.ksh" -exec sed -i"bak" 's/^echo "/echo -e "/' {} \;

关于linux - echo 全局替换的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8571719/

相关文章:

windows - 与 PhoneGap 紧密相关的桌面发布平台?

linux - 想要将字符串存储到文件中,文件名是 shell 中命令的输出

linux - 在 Linux 中一个接一个地调度作业

regex - sed - 替换行中的字符

sed - Unix Shell 脚本查找和替换子文件夹中特定文件中的字符串

c - LTE 到 Wi-Fi 切换

linux - iwlist 输出到列表或变量

c - 非阻塞 tcp 套接字如何通知应用程序发送失败的数据包。

windows - 将部分 DOS/Windows 批处理转换为 linux shell

linux + 打印 linux 版本(一个字符如 5 或 6 .. 等)