除了sed
之外还有其他选择吗?
我的意思是在shell脚本
cat file1
,它包含以下内容:
How
are
you
但是假设我想将“如何”改为“谁”?
答案 0 :(得分:1)
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
,尤其是带有sed
选项的GNU -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