我试图找到一种方法来运行多个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的自动机,或者可能是更好的解决方案?
答案 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循环或脚本中。