使用单个终端命令将单词添加到文本文件(无编辑器)


22

我是Linux的新手。我只需.conf要从打开的终端中编辑文件,而无需使用任何文本编辑器。也就是说,我可以从开放的终端将单词和句子添加到配置文件中吗?

示例:command /home/.../file.conf -add 'abcd'到第23行,依此类推。最后,保存它。

是否可以仅使用命令在该配置文件中搜索特定单词并将新文本添加到该配置文件的下一行?


1
貌似sed可以来帮忙。
尼蒂奇(Renitch)2014年

1
问一个问题。
Avinash Raj

Answers:


39

当我对脚本进行编程以按照您的要求进行编程时,通常会采用这种方式。

echo "Hello you!" >> myfile.txt
echo "this is 2nd line text" >> file.txt
echo "last line!" >> file.txt

瞧!你说对了。重要的注意事项>>意味着在现有文件中添加新行,同时>只需简单地覆盖所有内容。


感谢您的及时答复。但是我需要在我的.conf文件的第23行中依次添加3000多个单词。有没有更简单的方法?
user259060

20

使用sed可以轻松地从打开的终端向配置文件添加单词和句子。

sed -i '23iabcd' file.conf

在第23行将文本abcd插入文件file.conf

-i直接对file进行修改file.conf

如果要使用,awk则:

awk -v n=23 -v s="abcd" 'NR == n {print s} {print}' file > file.conf

以下在SearchPattern之后添加一行。

sed -i '/SearchPattern/aNew Text' SomeFile.txt

它在包含SearchPattern的每一行下方插入一行新文本。

要添加两行,可以\在键入“新建文本”时使用a 并输入换行符。

 sed -i '/pattern/a \
line1 \
line2' inputfile

5

您也可以使用该printf命令。

向文件添加行

$ printf "\nThis is a new line to your document" >> file.txt

覆盖文件

$ printf "This overwrites your file" > file.txt

0
awk '{if ($1 ~ /regex/) print $1 "content to be added"; else print $1}' < inputfile > outputfile

笔记:

  • regex是一个正则表达式(也称为regex),它定义了搜索条件。正则表达式允许进行非常可定制的搜索,而awk理解的语法在手册中。在最简单的情况下-按字符搜索字符串“原样”-只需在特殊字符前加反斜杠即可(特殊字符列表请参见手册)

怎么运行的:

  • 打开inputfile以读取输入线,清除outputfile并打开以写入输出线
  • 对于每一行,在大括号中运行该块:
    • 如果该行与正则表达式匹配,则输出附加了内容的行
    • 否则,输出相同的行。

0

我使用ed命令找到了自己的问题的解决方案

ed -s /home/.../abc.conf <<< $'23i\ntext\n.\nwq'

文字可以包含27行。您可以从文本文件复制27行,然后将27行粘贴到配置文件中。但是我需要ed同时运行命令,以便将更多文本添加到同一配置文件中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.