当前位置: 首页 > 面试题库 >

使用Bash按列划分命令输出?

薄龙光
2023-03-14
问题内容

我想做这个:

  1. 运行命令
  2. 捕获输出
  3. 选择一条线
  4. 选择该行的一列

举例来说,假设我想从中获取命令名称$PID(请注意,这只是一个例子,我并不建议这是从进程ID中获取命令名称的最简单方法-
我的真正问题是另一个我无法控制其输出格式的命令)。

如果我跑步,ps我会得到:

  PID TTY          TIME CMD
11383 pts/1    00:00:00 bash
11771 pts/1    00:00:00 ps

现在我做的ps | egrep 11383,并得到

11383 pts/1    00:00:00 bash

下一步:ps | egrep 11383 | cut -d" " -f 4。输出为:

<absolutely nothing/>

问题是cut将输出剪切单个空格,并ps在第二和第三列之间添加一些空格以保持表的相似性,因此cut选择一个空字符串。当然,我可以cut选择第7个字段而不是第4个字段,但是我怎么知道,特别是当输出是可变的且事先未知时。


问题答案:

一种简单的方法是添加[tr](http://linux.die.net/man/1/tr)来压缩任何重复的字段分隔符:

$ ps | egrep 11383 | tr -s ' ' | cut -d ' ' -f 4


 类似资料:
  • 基础常用命令 某个命令 --h,对这个命令进行解释 某个命令 --help,解释这个命令(更详细) man某个命令,文档式解释这个命令(更更详细)(执行该命令后,还可以按/+关键字进行查询结果的搜索) Ctrl + c,结束命令 TAB键,自动补全命令(按一次自动补全,连续按两次,提示所有以输入开头字母的所有命令) 键盘上下键,输入临近的历史命令 history,查看所有的历史命令 Ctrl +

  • 你好,我有一个bash脚本,我打算测量时间流逝,CPU%和内存使用的脚本与输出被放入一个. txt文件与所需的输出,如: 执行此操作的脚本如下所示: 然而,下载终端进度也被定向到. txt文件,即. txt文件。 我不熟悉使用stderr和stdout,所以我是否误解了它们,我将如何解决这个问题?

  • 问题内容: 因此,我试图制作一个bash脚本,该脚本调用此命令,然后将其输入。它调用此命令,此命令之后需要3-4个输入。我键入命令,它等待我输入名字,一个我输入名字,它等待我输入名字,依此类推。如何使用bash脚本一次将这些参数传递给命令? 问题答案: 几种方法。 分组所有echo命令并将它们通过管道传递给命令: 或使用heredoc:

  • 本文向大家介绍shell(bash)下“time” 命令的输出详解,包括了shell(bash)下“time” 命令的输出详解的使用技巧和注意事项,需要的朋友参考一下 前言 相信大家都知道bash下time是一个很有用的命令,它可以为一段脚本或一个程序的执行计时,这通常在粗略比较程序执行效率的时候很方便。但是你会发现,time命令输出的时间文字不能被简单地重定向,例如重定向至一个文本文件,只能显示

  • 我想让我的Bash脚本对最终用户来说更加优雅。当Bash执行命令时,如何隐藏输出? 例如,当Bash执行时 以下内容将显示给执行Bash的用户: 现在我想对用户隐藏这一点,而是显示: 我怎样才能完成这项任务?我一定会帮助使脚本更加用户友好。如果发生错误,则应向用户显示。 我想知道如何显示相同的消息,而一组命令正在执行。

  • 问题内容: 我必须找到具有选定权限的文件,并列出它们及其编号。因此,我想将命令的结果传递给shell和下一个命令,该输出我想存储在变量中,以便以后可以很好地显示。我想吃点东西 但部分无效。请帮忙。 编辑 我知道我可以将命令的整个输出放到像这样的变量中 但是然后我只需要的结果。我如何从该变量中获得该数字?是否可以按相反的顺序显示它,先显示编号,然后显示列表? 问题答案: 复制到TTY(不是标准输出!