我想写代码来添加在行中为ex打开inittab文件,并添加
c2:1235:respawn:/sbin/agetty 38400 tty2 linux
c3:1235:respawn:/sbin/agetty 38400 tty3 linux
c4:1235:respawn:/sbin/agetty 38400 tty4 linux
c5:1235:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux
<<~~~ i want add code here
# Local serial lines:
#s1:12345:respawn:/sbin/agetty -L ttyS0 9600 vt100
#s2:12345:respawn:/sbin/agetty -L ttyS1 9600 vt100在bash中有什么方法可以做到这一点吗?
发布于 2009-07-13 11:39:24
这里是使用嵌入的awk代码片段的wazoox脚本的替代方案(我已经添加了来自wazoox的初始化-q )
#!/bin/bash
my_file=/etc/inittab
my_pattern="c6:12345:respawn:.* 38400 tty6 linux"
awk -f - ${my_file}<<__END__
{ print }
/${my_pattern}/ {
print "any code you want to add"
}
__END__
init -q只需检查您想要检测的模式,并使用"man awk“进行打印。如果您有很大的代码块要添加,那么可以在awk代码片段中使用$(cat ${my_code_file})。
发布于 2009-07-13 11:29:24
修改你的inittab,然后"init -q“重新加载它。如果您的问题是关于bash中的文件编辑,您可以读取文件并在循环中重写它,如下所示:
for i in `cat thefile`
do
echo $i >> someOtherFile
if [ "some condition" == "some condition" ];
then
# do something else
fi
done这将逐行读取"thefile“并写入"someOtherFile”,同时允许您插入任何测试以在流中添加行。
发布于 2009-07-13 11:35:09
单行道
# awk '/^# Local serial lines/{ print "I wanna add code here\n"}1' /etc/inittab > temp
# mv temp /etc/inittab然后按照wazoox说的那样初始化-q。
另一种方式:如果只有一次,则手动编辑inittab。
https://stackoverflow.com/questions/1118923
复制相似问题