當前位置: 首頁>>技術教程>>正文


apt – 如何使用命令行在文本文件的頂部插入一行?

, ,

問題描述

我想在現有文件的頂部插入文本。我怎樣才能做到這一點。我嘗試了 echotee 但沒有成功。

我試圖從終端在 sources.list 文件的頂部插入 repo 行。

說明

我需要一個單行快速解決方案,因為我已經知道另一個答案的方法

最佳回答

使用 sed 實際上很容易:

  • sed -i -e '1iHere is my new top line\' filename

  • 1i 告訴 sed 在文件的第 1 行插入後麵的文本;不要忘記末尾的 \ 換行符,以便將現有的第 1 行移動到第 2 行。

次佳回答

一般來說,使用腳本進行現場編輯很棘手,但您可以使用 echocat 然後使用 mv

echo "fred" > fred.txt
cat fred.txt t.txt >new.t.txt
# now the file new.t.txt has a new line "fred" at the top of it
cat new.t.txt
# can now do the rename/move
mv new.t.txt t.txt

但是,如果您正在使用 sources.list,您需要添加一些驗證和 bullet-proofing 以檢測錯誤等,因為您真的不想丟失它。但這是一個單獨的問題:-)

第三種回答

./prepend.sh "myString" ./myfile.txt

已知 prependmy custom shell

#!/bin/sh
#add Line at the top of File
# @author Abdennour TOUMI
if [ -e $2 ]; then
    sed -i -e '1i$1\' $2
fi

也使用相對路徑或絕對路徑,它應該可以正常工作:

./prepend.sh "my New Line at Top"  ../Documents/myfile.txt

更新 :

如果你想要一個永久的腳本,打開 nano /etc/bash.bashrc 然後在文件末尾添加這個函數:

function prepend(){
# @author Abdennour TOUMI
if [ -e $2 ]; then
    sed -i -e '1i$1\' $2
fi

}

重新打開您的終端並享受:

prepend "another line at top" /path/to/my/file.txt

第四種回答

為什麽不使用真正的文本編輯器呢? ed 是標準的文本編輯器。

ed -s filename <<< $'1i\nFIRST LINE HERE\n.\nwq'

或者,如果您希望命令更具可讀性:

ed -s filename < <(printf '%s\n' 1i "FIRST LINE" . wq)
  • 1 : 轉到第一行

  • i : 插入模式

  • 你要插入的東西…

  • . : 停止插入,回到正常模式

  • wq : 寫完退出,謝謝,再見。

第五種回答

總是有 awk 選項。用您的內容替換 string 變量。但這不是就地更改。就個人而言,我傾向於不進行就地更改。這絕對是個人喜好。兩件事, -v 表示 awk 中的變量,變量 n 在這裏用於匹配行號,有效地 NR == 1 。您可以通過更改 ns 的值以多種方式使用它。

string="My New first line"; awk -v n=1 -v s="$string" 'NR == n {print s} {print}'     file.source > file.target

例子:

% cat file.source                                                                                                                                      

First Line
Second Line
Third Line

% string="Updated First Line"; awk -v n=1 -v s="$string" 'NR == n {print s} {print}' file.source > file.target; cat ./file.target                      !698

Updated First Line
First Line
Second Line
Third Line

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/11955.html,未經允許,請勿轉載。