0

除了 有没有其他的选择sed?我的意思是在 shell 脚本中执行此操作的命令

cat file1它包含以下内容:

How
are
you

但是假设我想把“How”这个词改成“Who”?

4

1 回答 1

1

有多种替代方法sed,但sed可能是此特定操作的首选工具。替代方案包括:

  • ed
  • ex
  • Perl
  • Python
  • 红宝石
  • awk

ed命令ex类似:

ed ff <<!
g/How/s//Who/g
w
q
!

你可以写ex而不是ed.

perl -i.bak -p -e 's/\bHow\b/Who/g' ff

awk '{ gsub(/How/, "Who"); print }' ff

我在 Python 或 Ruby 方面不够流利,无法提供惯用的解决方案。

但是,特别是带有该选项的sedGNU ,也非常方便:sed-i

sed -i 's/How/Who/g' ff

如果没有该-i选项(并且该-i选项并非完全防白痴,如果您有像我这样的白痴,带有符号链接或指向单个文件的多个链接),您可以使用:

sed 's/How/Who/g' ff > ff.$$
cp ff.$$ ff
rm -f ff.$$

或者,使用陷阱确保没有残留的临时文件:

tmp=ff.$$
trap "rm -f $tmp; exit 1" 0 1 2 3 13 15
sed 's/How/Who/g' ff > ff.$$
cp ff.$$ ff
rm -f ff.$$
trap 0
于 2012-10-07T06:10:36.883 回答