我有一些行存储在名为bashrc_snippet
的文本文件中。我想将它们插入.bashrc
。由于我有时会更改文本文件的内容,因此我希望能够将它们重新插入.bashrc文件中。为此,我想使用标记线:
# User things
HISTSIZE=1000
#START
alias ls='ls --color=tty'
... some more lines
#END
我想要一个bash脚本来执行此操作(可能使用sed或awk)。算法应该是:
答案 0 :(得分:1)
不太了解你的要求,但这是一个猜测
#!/bin/bash
rcfile="$1"
snippet="$2"
var=$(<"$snippet")
if grep -q "START" "$rcfile" ;then
awk -v v="$var" '/START/ {
print $0
print v
f=1
}f &&!/END/{next}/END/{f=0}!f' "$rcfile" >t && mv t "$rcfile"
else
echo "#START" >> "$rcfile"
echo "$var" >> "$rcfile"
echo "#END" >> "$rcfile"
fi
使用:
$ ./test.sh rc_file bashrc_snippet
答案 1 :(得分:0)
我想建议这个(ex或vim命令):
ex -c '/^#START/+1,/^#END/-1 d' -c '/^#START/ r bashrc_snippet' -c 'wq'