私は、次のコマンドを使用して、YMLファイルからブロックを削除しようとしている、以下のYMLのためUbuntuのバッシュawkの異常な動作
awk '$1 == "tool:"{t=1}
t==1 && $1 == "ports:"{t++; next}
t==2 && /:[[:blank:]]*$/{t=0}
t != 2' file.yml
、
tool:
image: tool.xxx.com/platform/app:dev
log_driver: syslog
restart: always
ports:
- "54325:80"
- "543325:80"
volume:
- "a:b"
tool1:
image: tool1.xxx.com/platform/app:dev
log_driver: syslog
restart: always
ports:
- "54325:80"
- "543325:80"
volume:
- "a:b"
目標はports
を削除することですメインブロックtool
のサブブロック。 https://stackoverflow.com/a/37256824/698072からのこの回答は、試したときに完全に有効と思われます。hereしかし、それは私のUbuntu 14.04のymlファイルの最後までポートからすべてのものを削除しています(14.04の複数のシステムでshとzshの両方を試しました)。
は予想:
tool:
image: tool.xxx.com/platform/app:dev
log_driver: syslog
restart: always
volume:
- "a:b"
tool1:
image: tool1.xxx.com/platform/app:dev
log_driver: syslog
restart: always
ports:
- "54325:80"
- "543325:80"
volume:
- "a:b"
出力:
tool:
image: tool.xxx.com/platform/app:dev
log_driver: syslog
restart: always
この特異な場合に任意のヘルプは本当に素晴らしいことです。
コンソールセッションの画像は含めないでください。 *テキスト*をコピーしてあなたの質問に貼り付けてください。 – rici
あなたはどのバージョンのawkを使用していますか?すべての文字クラス( '[[:blank:]]')をサポートしているわけではないので、代わりに '[\ t]'を試してみてください。 –