Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
过滤Linux命令输出_Linux - Fatal编程技术网

过滤Linux命令输出

过滤Linux命令输出,linux,Linux,我需要根据列值获取一行,就像查询数据库一样。我有这样的命令输出 名称ID Mem VCPUs State 时间(s) 域-0 0 15485 16 r----- 1779042.1 prime95-01 512 1 -b----61.9 这里我只需要列出那些状态为“r”的行。像这样的, 域-0 0 15485 16 r-----1779042.1 我尝试过使用“grep”和“awk”,但仍然没有成功 请在这个问题上帮助我 问候,, Raaj试试: awk '$5 ~ /^r.*/ { print

我需要根据列值获取一行,就像查询数据库一样。我有这样的命令输出

名称ID Mem VCPUs State
时间(s)

域-0 0 15485 16 r----- 1779042.1

prime95-01 512 1
-b----61.9

这里我只需要列出那些状态为“r”的行。像这样的,

域-0 0 15485 16
r-----1779042.1

我尝试过使用“grep”和“awk”,但仍然没有成功

请在这个问题上帮助我

问候,, Raaj

试试:

awk '$5 ~ /^r.*/ { print }' 
像这样:

cat file | awk '$5 ~ /^r.*/ { print }' 

有多种工具可用于筛选

如果您只想要带有“r-----”的行,grep就足够了:

command | grep "r-----"


引号是可选的,但可能会防止grep被-'的

grep解决方案绊倒:

command | grep -E "^([^ ]+ ){4}r"
此操作的作用(-E在扩展regexp上切换):

第一个插入符号(^)与行的开头匹配。 [^]只匹配非空格字符的一次出现,以下修饰符(+)允许它也匹配更多出现

它与([^]+]中的尾随空格组合在一起,匹配后跟单个空格的任何非空格字符序列。修改器{4}要求此构造精确匹配四次

然后,单个“r”就是您要搜索的文字字符

简单地说,这可以写成“如果行以四个字符串开头,后跟一个空格,下一个字符是,那么行匹配。”


Jan Goyvaerts写了一篇非常好的正则表达式介绍(http://www.regular-expressions.info/quickstart.html).

grep
可以为您处理此问题:

yourcommand | grep -- 'r-----'
将(完整的)输出保存到一个文件以供以后分析通常很有用。为此,我使用
tee

yourcommand | tee somefile | grep 'r-----'
如果您想稍后在不重新运行
yourcommand
的情况下找到包含“-b----”的行,您可以使用:

grep -- '-b----' somefile
这里不需要
cat


我建议将
--
放在调用
grep
之后,因为您的模式包含减号,如果减号位于模式的开头,这看起来像是
grep
的一个选项参数,而不是模式的一部分。

在linux中通过awk cmd进行过滤:-

首先找到此cmd的列并存储文件2:-

awk'/Domain-0 0 15485/'file1>file2

输出:-

域0 15485 16 r-----1779042.1

在文件2中的awk cmd之后:-

awk'{打印$1、$2、$3、$4、“\n”、$5、$6}'文件2

最终输出:-

域0 15485 16


r-----1779042.1

@Raajkumar:欢迎来到StackOverflow。请花一点时间阅读这一节,了解我们在这里如何说“非常感谢”:“引号是可选的,但可能会防止grep被-”所绊倒。但他们不会。哪部分不起作用?当我在七年前写它的时候,它确实存在,但是如果你能指出错误的话,我很乐意更新它。
grep -- '-b----' somefile