除了 有没有其他的选择sed
?我的意思是在 shell 脚本中执行此操作的命令
cat file1
它包含以下内容:
How
are
you
但是假设我想把“How”这个词改成“Who”?
除了 有没有其他的选择sed
?我的意思是在 shell 脚本中执行此操作的命令
cat file1
它包含以下内容:
How
are
you
但是假设我想把“How”这个词改成“Who”?
有多种替代方法sed
,但sed
可能是此特定操作的首选工具。替代方案包括:
ed
ex
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 方面不够流利,无法提供惯用的解决方案。
但是,特别是带有该选项的sed
GNU ,也非常方便: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