如何将字符串插入文件的倒数第二行

bin*_*bjz -1 bash awk sed

我有一个关于如何将字符串插入文件的倒数第二行的问题.

例如:

$ cat diff_a.txt
students
teacher
mike
john

$ cat diff_b.txt
python
bash shell
Java
Run Code Online (Sandbox Code Playgroud)

预期结果应为:

$ cat diff_b.txt
python
bash shell
mike
Java
Run Code Online (Sandbox Code Playgroud)

如果我使用以下命令,它会将字符串"mike"追加到diff_b.txt的最后一行

$ grep mike diff_a.txt >> diff_b.txt
$ cat diff_b.txt
python
bash shell
Java
mike
Run Code Online (Sandbox Code Playgroud)

题:

How should I put "mike" into second to last line of diff_b.txt ?
Run Code Online (Sandbox Code Playgroud)

Mag*_*ago 6

您可以使用sed在特定行之前插入一行,给定它的位置:

sed '4i\My New Line\' my_file.txt
Run Code Online (Sandbox Code Playgroud)

将在第四行插入"我的新行"

您可以使用wc -l获取文件中的行数:

$ wc -l < my_file.txt
5
Run Code Online (Sandbox Code Playgroud)

完整示例直接回答您的问题:

$ cat my_file.txt
Hello
World
There is another line

$ sed -i "`wc -l < my_file.txt`i\\My New Line\\" my_file.txt

$ cat my_file.txt
Hello
World
My New Line
There is another line
Run Code Online (Sandbox Code Playgroud)
  • 添加-iso sed实际编辑文件
  • 使用双引号,否则不会在单引号内执行替换和扩展.
  • 逃离 \

  • 也许 `sed '$iMy New Line' file` 可以吗? (2认同)