Bash 如何在Mac OS上的文件第一行之前插入文本

Bash 如何在Mac OS上的文件第一行之前插入文本,bash,macos,sed,Bash,Macos,Sed,试图编写一个bash脚本,在给定文件夹的每个文本文件中添加一行新行,我尝试了sed。我有一个工作代码,在第1行添加文本“blabla” 但如何: 我是否在“blabla”-文本后添加回车符 对给定文件夹中的所有文件(.txtaa/.txtab/.txtac)执行此操作 这是我的密码 #!/bin/bash sed '1i\ blablabla' miFile.txt > myNewFile.txt 您可以使用与POSIX兼容的面向行文本编辑器对文件进行快速就地编辑 这应该适用于Ma

试图编写一个bash脚本,在给定文件夹的每个文本文件中添加一行新行,我尝试了
sed
。我有一个工作代码,在第1行添加文本“blabla”

但如何:

  • 我是否在“blabla”-文本后添加回车符
  • 对给定文件夹中的所有文件(
    .txtaa/.txtab/.txtac
    )执行此操作
这是我的密码

#!/bin/bash

sed '1i\
blablabla' miFile.txt > myNewFile.txt

您可以使用与POSIX兼容的面向行文本编辑器对文件进行快速就地编辑

这应该适用于Mac OS或任何与POSIX兼容的shell。在脚本中,假设要对文件夹中的每个文件执行此操作,请执行下面的脚本

在运行脚本之前,您必须在所需文件夹中。例如,
cd myFolder/
并运行它:

由于您声称有多个文件扩展名,因此可以使用glob模式作为
*.txt*

#!/usr/bin/env bash

shopt -s nullglob
for file in *.txt*; do 
    ex -sc '1i|blablabla' -cx "$file"
done
或者,如果您是从父文件夹运行,则可以修改循环构造,使其具有

for file in myFolder/*.txt*; do
如链接页面中所述,
1
选择文件的第一行,
i
插入您选择的
,后跟一个换行符,然后
x
关闭文件


请记住,此操作是就地完成的,这意味着您无法恢复正在修改的文件。在执行此操作之前,请确保您完全确定要执行的替换文本,或者)备份文件夹一次。

要在何处添加回车符?每个文件的最后一行?否-我想将其添加到我的“blabla”-文本之后(以便将此文本作为文件夹中所有文本文件的第一行插入),因此您想插入一些文本,例如,
blabla
作为文件的第一行,然后是其余行?没错!这就是我想要的…只是
{echo'blablablabla';cat miFile.txt;}>myNewFile.txt
有什么问题吗?我不太正确-我分割了文件,因此有了结尾.txtaa/.txtab/.txtac/等等-因此最新的解决方案在这里不起作用。但是我在脚本中添加了
*.txt*
,现在一切都非常出色!!!非常感谢您的支持!!!