テキストを含むyamlファイルがあります。
- name: flexvol-driver-host
hostPath:
type: DirectoryOrCreate
path: /usr/libexec/kubernetes/kubelet-plugins/volume/exec
imagePullSecrets:
- name: acrrepo-bad25ec678be80
- name:.*
削除したいシェルスクリプトがあります。imagePullSecrets:
ただ。したがって、imagePullSecrets:
その後、- name:
削除して保管する必要imagePullSecrets:
があります。
誰かがsedを使ってこれを行うのを手伝ってください。
添付:複数のアイテムを持つことができますimagePullSecrets:
yamlドキュメントから。だから皆imagePullSecrets:
上記と同じ方法で処理する必要があります。
ベストアンサー1
指定された行が互いに続く場合、GNU sedは次のことができます。
sed 'N;/\s*imagePullSecrets:\n[ -]*name:/!{P;D};s/\n.*//' file
エディタバッファ(パターンスペース)には常に2行あります。パターンと一致しない場合は、最初の行が印刷され、コマンドによって削除され、P
実行D
がスクリプトの先頭に移動されます。つまり、次の行がコマンドによって残りの2行目に追加され、N
ループがチェックされます。パターンと一致したらもう一度。パターンが見つかると、{P;D}
コマンドをスキップしてループを中断し、置換コマンドを実行してs///
バッファの2行目を壊します。次のステップでは、エディタは操作を開始して次の行を空のバッファにロードし、最後の行ではない場合はコマンドを使用して別の行を追加しますN
。コマンドの実行中にN
最後の行がバッファにロードされたことが見つかった場合は、スクリプトの追加実行が終了し、バッファ内の1行が印刷されます。
sed
FreeBSDは異なる動作をし、最後の奇数行を表示しないことを認識する必要があります。
D
...パターン空間から最初の改行文字までテキストを削除し、新しい入力行を読み取らずに結果パターン空間にループを再開します。