在参照这个问题在第一个和第二个文件中获得匹配的行标识符后,我需要将第一个文件中的行替换为第二个文件中的行。为此,我使用 SED,如下所示。但 Sed 仅替换新文件中的该行。如何在没有临时文件的情况下在同一文件中实现更新(因为这些文件非常大)。
#!/bin/ksh
while read line
do
var=`echo $line|cut -c 3-25`
while read i
do
var1=`echo $i|cut -c 3-25`
if [ $var == $var1 ];
then
sed -i s/$line/$i/ t1
else
echo "not matched"
fi
done < t2
done < t1
即使没有-i
选项我也没有得到结果。请帮我。
Edit:或者建议我任何其他没有临时文件或任何脚本语言的最佳方法(不太推荐)。
看看海绵,它是更多实用程序.
e.g.
% sed "s/root/toor/" /etc/passwd | grep -v joey | sponge /etc/passwd
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)