sta*_*nny 7 unix linux bash shell command-line
我只想显示命令中所有记录的特定列。
示例:docker ps显示 10 列中的数据。列标题之间可以有空格。我的要求是以某种顺序只获得 2-4 列。
在任何以表格方式响应的命令中是否有直接的方法来做到这一点?
我是 Linux 新手,正在考虑这是否可行。谢谢。
例如:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED NAMES
123 image "ABC DEF" 10 hours ago image ABC
Run Code Online (Sandbox Code Playgroud)
在上面的场景中,CONTAINER ID是一个标题列但有空间,并且在NAMES列的行中可以有空间。
使用AWK, CUTetc 为所有命令编写通用脚本比较棘手,因为它们适用于“空间”逻辑。
你可以这样使用awk:
$ ps | awk '{print $2 " " $3 " " $4}'
TTY TIME CMD
pts/22 00:00:00 bash
pts/22 00:00:00 ps
pts/22 00:00:00 awk
Run Code Online (Sandbox Code Playgroud)
或者与column -t更可读的输出一起使用:
$ ps | awk '{print $2 " " $3 " " $4}' | column -t
TTY TIME CMD
pts/22 00:00:00 bash
pts/22 00:00:00 ps
pts/22 00:00:00 awk
pts/22 00:00:00 column
Run Code Online (Sandbox Code Playgroud)
正如William Pursell在下面的评论中指出的,awk命令可以简化:
$ ps | awk '{print $2, $3, $4}' | column -t
TTY TIME CMD
pts/9 00:00:00 bash
pts/9 00:00:00 ps
pts/9 00:00:00 awk
pts/9 00:00:00 column
Run Code Online (Sandbox Code Playgroud)
将输出传送到tr和cut:
docker ps | tr -s " " | cut -d " " -f 2-4
Run Code Online (Sandbox Code Playgroud)
tr上的-s标志压缩字符并只留下一个“”
-d on cut 告诉用“”分割字段。
| 归档时间: |
|
| 查看次数: |
5434 次 |
| 最近记录: |