sed在不同的文件中添加不同的行

时间:2018-03-09 20:11:53

标签: sed automator

我试图找到一种方法来运行多个sed命令,这些命令会在不同文件的开头添加行(在Mac OS上)。

从终端运行时有效。

sed -i '' '1i\
\\version \"2.19.65\"\
\\language \"english\"\
\\include \"dynamics-defs.ily\"\
altosaxINotes = \\transpose c ef {\
\\relative c {\
' altosaxI.ily

但我想在不同的文件上添加略有不同的文字:

sed -i '' '1i\
\\version \"2.19.65\"\
\\language \"english\"\
\\include \"dynamics-defs.ily\"\
altosaxIINotes = \\transpose c ef {\
\\relative c {\
' altosaxII.ily

我有大约30或40个这样的运行,都略有不同。是否可以将它们全部组合成一个终端命令,或者可能使用Mac的自动机,或者可能是更好的解决方案?

1 个答案:

答案 0 :(得分:1)

这可能适合你(GNU sed):

# create a function f with one parameter
f(){ cat <<! >tempFile && sed -i '1e cat tempFile' ${1}.ily; }
\\version "2.19.65"
\\language "english"
\\include "dynamics-defs.ily"
${1}Notes = \\transpose c ef {
\\relative c {
!
# call the function
f altosaxI

然后可以将函数f包含在for循环或脚本中。