我想使用脚本在aix os中的特定行号上插入/删除一行。
我正在尝试使用以下代码
no2=103
dis=<disabled></disabled>
sed "${no2} a $dis" $node > vi.xml
到目前为止,我已经尝试了awk,可执行vi命令。什么都没有
错误输出如下:
server:/u/vwadhwa/MIMOnOffHold $ ./script.sh INTACTIX_TO_NDW_ITX007 stop
Performing stop action on dirmon-INTACTIX_TO_NDW_ITX007 which is present in node-IKBNODE01.xml
sed: Not a recognized flag: i
Usage: sed [-n] [-u] Script [File ...]
sed [-n] [-u] [-e Script] ... [-f Script_file] ... [File ...]
答案 0 :(得分:1)
这种通过在特定行插入文本来对文件进行就地编辑的方法,对于ed
来说是一个很好的用例(我假设AIX拥有)。
要在行$no2
之前插入新行(使新行$no2
;使用a
在该行之后插入):
ed -s "$node" <<EOF
$no2 i
$dis
.
w
q
EOF
并删除第$no2
行:
ed -s "$node" <<EOF
$no2 d
w
q
EOF
尽管您似乎正在使用XML,这意味着了解XML的工具将是一个更好的选择-如果文件发生更改,导致在第103行盲目添加标签会导致该标签无效,那该怎么办?
答案 1 :(得分:0)
不能完全确定您要问的内容,但是如果您只想插入新行,则可以使用类似这样的方法,其中$dis
是您要插入的行:
perl -pe "s/^/$dis\n/ if \$. == $line_number" input_file > output_file
您还可以使用-i
标志在适当位置编辑文件:
perl -i -pe "s/^/$dis\n/ if \$. == $line_number" input_file