我有一个名为flw.py的文件,并希望编写一个bash脚本来替换文件中的一些文本(取出最后两行并添加两行)。如果这看起来像是一个愚蠢的问题,我道歉。由于我还在学习编写脚本,所以我将不胜感激。谢谢!
答案 0 :(得分:1)
head -n -2 flw.py > tmp # (1)
echo "your first new line here..." >> tmp # (2)
echo "your second new line here...." >> tmp #
mv tmp flw.py # (3)
说明:
head
通常打印出文件的前十行。 -n
参数可以更改打印出的行数。因此,如果您想要打印前15行,您将使用head -n 15
。如果给头部赋予负数则意味着相反:打印掉所有行,但最后N行。这恰好是你想要的:head -n -2
然后我们将head
命令的输出重定向到名为tmp
的临时文件。 >
在这里重定向魔法。 tmp
现在包含了flw.py的所有内容,但最后两行。
接下来,我们使用echo
命令添加两个新行。我们将echo "your first new line here..."
的输出附加到我们的tmp
文件中。 >>
附加到现有文件,而>
将覆盖现有文件。
我们对要添加的第二行做同样的事情。
tmp
文件移至flw.py
并完成工作。答案 1 :(得分:0)
您可以使用单个sed命令来获得期望的结果
sed -n 'N;$!P;$!D;a\line\n\line2' fly.py
示例:强>
cat fly.py
1
2
3
4
5
sed -n 'N;$!P;$!D;a\line\n\line2' fly.py
输出
1
2
3
line1
line2
注意:
使用-i
选项更新文件