我嘗試使用下面的命令來刪除從YML文件塊,Ubuntu的慶典awk的古怪行爲
awk '$1 == "tool:"{t=1}
t==1 && $1 == "ports:"{t++; next}
t==2 && /:[[:blank:]]*$/{t=0}
t != 2' file.yml
以下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]'。 –