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

时间:2018-05-05 16:01:38

标签: bash macos sed

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

但是如何:

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

这是我的代码

#!/bin/bash

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

1 个答案:

答案 0 :(得分:2)

您可以使用永远符合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

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

for file in myFolder/*.txt*; do

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

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