【发布时间】:2013-02-16 12:01:42
【问题描述】:
如何在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
【问题讨论】:
-
如何这个文件是自动生成的?你能修好发电机吗?
-
不,我不能,发电机不是我提供的,也许从长远来看它会被修复(我提出了一个问题)但在短期内不会。
-
您是否尝试过搜索?这是一个很常见的问题。