从awk输出,如何剪切或修剪列中的字符



此时

我想修剪.fmbi1a5nn9sp5o4qy3eyazeq5.eddvrl9sa8t448pb38vibj8ef:.ilwio0k43fgqt4jqzyfadx19v:,以便输出占用更少的空间:(

第一步:

docker ps --format "{{.Names}}: {{.Status}}" | sort -k1 | column -t
mon_node-exporter.fmbi1a5nn9sp5o4qy3eyazeq5.eddvrl9sa8t448pb38vibj8ef:     Up  7      days
mon_prometheus.1.ilwio0k43fgqt4jqzyfadx19v:                                Up  7      days

我知道

我可以做一些类似的事情:

docker ps --format "{{.Names}}: {{.Status}}" | sort -k1 | rev | cut -d"." -f2- | rev
mon_node-exporter.fmbi1a5nn9sp5o4qy3eyazeq5
mon_prometheus.1

问题

我正在失去其他列:-/

想法

这样做(用awk(听起来是合乎逻辑的,但它不起作用。有什么想法吗?

docker ps --format "{{.Names}} : {{.Status}}" | sort -k1 | awk '{(print $1 | rev | cut -d"." -f2- | rev),$2,$3,$4,$5,$6}' | column -t 

提前谢谢!P

剪切最后一个点扩展

$ docker ... | sort | awk '{sub(/.[^.]*$/,"",$1)}1' file | column -t
mon_node-exporter.fmbi1a5nn9sp5o4qy3eyazeq5  Up  7  days
mon_prometheus.1                             Up  7  days

或者,删除点后超过20个字符的内容。

$ ... | sed -e 's/(.[a-z0-9:]{20,})* / /' | column -t
mon_node-exporter  Up  7  days
mon_prometheus.1   Up  7  days

工作!这个把戏会让我的生活轻松很多。

(我删除了文件(

docker ps --format "{{.Names}}: {{.Status}}" | sort -k1 | awk '{sub(/.[^.]*$/,"",$1)}1' | column -t;
mon_grafana.1                                   Up  24  hours
mon_node-exporter.fmbi1a5nn9sp5o4qy3eyazeq5     Up  23  hours

问题#2:现在,您将如何继续剪切第一个点之后的字符?

干杯!

最新更新