UNIXの特定の行の後にテキストの行をファイルに挿入するにはどうすればよいですか?
背景:ファイルは自動生成されたテキストファイルですが、特定の行の後に4行追加するために、再生成されるたびに手動で編集する必要があります。この行が常にファイルに含まれることは保証できますが、どの行になるかを正確に保証することはできないため、固定の行番号に追加するのではなく、この行の位置に基づいて追加の行を追加する必要があります。このプロセスはビルドプロセスの一部であるため、自動化したいと思います。
私はMacOSXを使用しているので、UNIXコマンドラインツールを使用できますが、そのようなツールにあまり精通しておらず、これを行う方法を理解できません。
編集
解決策をありがとう、私はまだそれらを機能させることができませんでしたが:
Sedソリューションを試しました
sed -i '/<string>1.0</string>/ a <key>CFBundleHelpBookFolder</key>\
<string>SongKongHelp</string>\
<key>CFBundleHelpBookName</key>\
<string>com.jthink.songkong.Help</string>
' /Applications/SongKong.app/Contents/Info.plist
しかし、エラーが発生します
sed: 1: "/Applications/SongKong. ...": invalid command code S
そして私はbashソリューションを試しました
#!/bin/bash
while read line; do
echo "$line"
if [[ "$line" = "<string>1.0</string>"]]; then
cat mergefile.txt # or echo or printf your extra lines
fi
done < /Applications/SongKong.app/Contents/Info.plist
しかしエラーが発生しました
./buildosx4.sh: line 5: syntax error in conditional expression: unexpected token `;'
./buildosx4.sh: line 5: syntax error near `;'
./buildosx4.sh: line 5: ` if [[ "$line" = "<string>1.0</string>"]]; then'
編集2 作業中、スペースがありませんでした
#!/bin/bash
while read line; do
echo "$line"
if [[ "$line" = "<string>1.0</string>" ]]; then
cat mergefile.txt # or echo or printf your extra lines
fi
done < /Applications/SongKong.app/Contents/Info.plist