除了 有没有其他的选择sed?我的意思是在 shell 脚本中执行此操作的命令
cat file1它包含以下内容:
How
are
you
但是假设我想把“How”这个词改成“Who”?
除了 有没有其他的选择sed?我的意思是在 shell 脚本中执行此操作的命令
cat file1它包含以下内容:
How
are
you
但是假设我想把“How”这个词改成“Who”?
有多种替代方法sed,但sed可能是此特定操作的首选工具。替代方案包括:
edexawk和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