使用脚本编辑文件中的文本

时间:2014-12-27 06:08:03

标签: linux bash

我有一个名为flw.py的文件,并希望编写一个bash脚本来替换文件中的一些文本(取出最后两行并添加两行)。如果这看起来像是一个愚蠢的问题,我道歉。由于我还在学习编写脚本,所以我将不胜感激。谢谢!

2 个答案:

答案 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)

说明:

  1. head通常打印出文件的前十行。 -n参数可以更改打印出的行数。因此,如果您想要打印前15行,您将使用head -n 15。如果给头部赋予负数则意味着相反:打印掉所有行,但最后N行。这恰好是你想要的:head -n -2

    然后我们将head命令的输出重定向到名为tmp的临时文件。 >在这里重定向魔法。 tmp现在包含了flw.py的所有内容,但最后两行。

  2. 接下来,我们使用echo命令添加两个新行。我们echo "your first new line here..."的输出附加到我们的tmp文件中>>附加到现有文件,而>将覆盖现有文件。

    我们对要添加的第二行做同样的事情。

  3. 最后,我们将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选项更新文件