我需要一个脚本,它可以将文本写到从第10行开始的存在的文件。它是一个空行,所以它不会是一个查找/替换。最好是在bash中,但是终端可以解释的任何东西都会工作得很好。
RE-EDITED:抱歉,我测试后还是有点问题.我觉得这和我想写的文件有关。也许这会让事情更容易..。
3 c
4 d
5 e
6 f
7 g
8 h
9 i
10 zone "$zone" in {
12 type master;
13 file "/etc/bind/db.$zone";
14 };
15 k
16 l
17 m谢谢你,乔
发布于 2011-02-04 01:01:16
使用sed
sed -i -e '10a\
new stuff' file使用bash
IFS=$'\n'
i=0
while read -r line; do
i=$((i+1))
if test $i -eq 10; then
echo "new stuff"
else
echo "$line"
fi
done <file >file.tmp
mv file.tmp file请注意,我不太确定您是指插入在第10行还是在第11行,所以请再次检查我在上面写10的位置。您可能希望9用于sed命令,11用于bash版本。
在perl中,您可以使用$NR变量。
open FILEHANDLE, "<file";
while (<FILEHANDLE>) {
if ($NR == 10) {
# do something
}
}在awk,它是NR。
awk 'NR != 10 { print }
NR == 10 { print "Something else" }' file但是请注意,您可以找到并替换空行。
sed -i -e 's/^$/replacement text/' file发布于 2011-02-04 01:01:20
你可以这么做:
head -10 fileA > fileB; echo "new text" >> fileB;请注意,这比使用sed要快得多。
发布于 2011-02-04 01:07:27
使用sed:
sed '10 s/^/text' file >file.new && mv file.new file与格尼丝:
sed -i '10 s/^/text' file用awk:
awk 'NR==10 {$0="text"} 1' file >filen.new && mv file.new filehttps://stackoverflow.com/questions/4893500
复制相似问题