bash/awk/sedで標準入力のデータを使用してファイルを内部で変更する方法

bash/awk/sedで標準入力のデータを使用してファイルを内部で変更する方法

bashでファイル(例えば.bashrc)を必要とする単純なコマンドや関数を作成したいと思います。

alias ..="cd .."
alias ls="ls -hNFCs --color=auto -I NTUSER.DAT\* -I ntuser.dat\*"
alias mv="mv -i"
alias cp="cp -i"
alias rm="rm -i"
alias df="df -h"
alias du="du -h"
alias curl="curl -s"
alias c1="awk '{ print \$1 }'"
alias c2="awk '{ print \$2 }'"
alias c3="awk '{ print \$3 }'"
alias c4="awk '{ print \$4 }'"
alias dcp="docker container prune -f"
alias sup="scoop update \*"
###
alias docker='docker -C /trajano/docker'

その後、機能を使って次のことをしたいと思います。

pullbashrc() {
  COMMONRC=$(curl -s https://gist.github.com/trajano/myrc)
  CUSTOMRC=$(??all contents from ### and including ###)
  echo $COMMONRC $CUSTOMRC > ~/.bashrc
}

したがって、Gistのbashrcを結合しますが、ローカルカスタマイズを追加します。CUSTOMRC

CUSTOMRCを実行する方法を知っているようです。

tail -n +$(grep -n "###" ~/.bashrc | cut -d ':' -f1) ~/.bashrc

私が望む通りになるようです。いくつかの点だけを組み合わせると答えが得られるようです。

ベストアンサー1

これが私が終わったものです。一時ファイルを削除できたらいいのに

pullbashrc() {
  curl -s https://gist.githubusercontent.com/trajano/71553de32f335092ad62f2f301cadd0f/raw/7006ef1c1bf10520e47089b385b8f9670d5ce96e/.bashrc > /tmp/bashrc
  tail -n +$(egrep -n "^###" ~/.bashrc | cut -d ':' -f1) ~/.bashrc >> /tmp/bashrc
  mv -f /tmp/bashrc ~/.bashrc
}

おすすめ記事