如何在 unix 中的特定行之后将文本行插入文件中?
背景:该文件是一个自动生成的文本文件,但每次重新生成它时我都必须手动编辑它,以便在特定行之后添加 4 个附加行。我可以保证这一行将始终在文件中,但我不能保证它将在哪一行,所以我希望根据这一行的位置添加额外的行,而不是添加到固定的行号。我想自动化这个过程,因为它是我构建过程的一部分。
我正在使用 Mac OSX,所以我可以使用 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