过滤Linux命令输出

Raa*_*mar 14 linux

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

名称ID Mem VCPU State
Time(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

dte*_*ech 10

有许多可用于过滤的工具.

如果你只想要带有"r -----"grep的行绰绰有余:

command | grep "r-----"
Run Code Online (Sandbox Code Playgroud)

要么

cat filename | grep "r-----"
Run Code Online (Sandbox Code Playgroud)

引号是可选的,但可能会阻止grep跳过-s


Joh*_*web 5

grep可以为您处理这个问题:

yourcommand | grep -- 'r-----'
Run Code Online (Sandbox Code Playgroud)

将(完整)输出保存到文件中以便稍后分析通常很有用。为此,我使用tee.

yourcommand | tee somefile | grep 'r-----'
Run Code Online (Sandbox Code Playgroud)

如果你想稍后找到包含“-b----”的行而不重新运行yourcommand,你可以使用:

grep -- '-b----' somefile
Run Code Online (Sandbox Code Playgroud)

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


tro*_*foe 3

尝试:

awk '$5 ~ /^r.*/ { print }' 
Run Code Online (Sandbox Code Playgroud)

像这样:

cat file | awk '$5 ~ /^r.*/ { print }' 
Run Code Online (Sandbox Code Playgroud)