2014-12-27 89 views
-1

我有一個名爲flw.py的文件,並且希望編寫一個bash腳本來替換文件中的某些文本(取出最後兩行並添加兩行新行)。我很抱歉,如果這似乎是一個愚蠢的問題。由於我仍然在學習腳本,因此將會對此有所瞭解。謝謝!使用腳本編輯文件中的文本

+0

更好地顯示一些示例。 – anubhava

回答

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並完成工作。
+0

非常感謝!對此,我真的非常感激! – matttttttttt

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選項來更新文件