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

iKK*_*iKK 5 macos bash sed

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

但如何:

  • 我要在“blablabla”文本后添加回车符吗?
  • .txtaa/.txtab/.txtac给定文件夹中的所有文件()执行此操作吗?

这是我的代码

#!/bin/bash

sed '1i\
blablabla' miFile.txt > myNewFile.txt
Run Code Online (Sandbox Code Playgroud)

Ini*_*ian 5

您可以使用符合 POSIX 标准的面向行的文本编辑器ex对文件进行快速就地编辑。

这应该适用于 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
Run Code Online (Sandbox Code Playgroud)

或者,如果您从父文件夹运行,您可以修改循环构造以具有

for file in myFolder/*.txt*; do
Run Code Online (Sandbox Code Playgroud)

如链接页面中所述,1选择文件的第一行,i|<text>插入<text>您选择的 ,后跟换行符,然后x关闭文件。

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