当前位置: 首页>>技术教程>>正文


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/article/11955.html,未经允许,请勿转载。