jmi*_*zas 4 shell perl awk sed
我需要一个脚本,可以将文本写入从第10行开始的现有文件.它是一个空行,所以它不会是一个查找/替换.希望它最好是bash,但终端可以解释的任何东西都可以正常工作.
RE-EDITED:
Run Code Online (Sandbox Code Playgroud)
对不起,但在我测试后仍然有一些问题...认为它与我想要写入文件有关.也许这会让它变得更容易..
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
Run Code Online (Sandbox Code Playgroud)
乔,先谢谢你
使用sed
:
sed -i -e '10a\
new stuff' file
Run Code Online (Sandbox Code Playgroud)
使用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
Run Code Online (Sandbox Code Playgroud)
请注意,我不确定你的意思是插入第10行还是第11行,所以仔细检查我10
上面写的地方.您可能需要9
为sed
命令或11
为bash
版本.
在perl
,您可以使用该$NR
变量.
open FILEHANDLE, "<file";
while (<FILEHANDLE>) {
if ($NR == 10) {
# do something
}
}
Run Code Online (Sandbox Code Playgroud)
在awk
,它是NR
.
awk 'NR != 10 { print }
NR == 10 { print "Something else" }' file
Run Code Online (Sandbox Code Playgroud)
但请注意,您可以找到并替换空白行,例如
sed -i -e 's/^$/replacement text/' file
Run Code Online (Sandbox Code Playgroud)