sed コマンドは、改行パターンを含むパターンを空白に置き換えます。

sed コマンドは、改行パターンを含むパターンを空白に置き換えます。

テキストを含む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行が印刷されます。

sedFreeBSDは異なる動作をし、最後の奇数行を表示しないことを認識する必要があります。

D ...パターン空間から最初の改行文字までテキストを削除し、新しい入力行を読み取らずに結果パターン空間にループを再開します。

おすすめ記事