解析多行文本bash


1

我需要解析

0 R username+ 13790 13743  0  80   0 - 28162 -      19:07 pts/0    00:00:00 grep --color=auto pm2
4 S root     25197     1  0  80   0 - 237119 ep_pol Apr05 ?       00:00:32 node /usr/local/lib/node_modules/pm2/bin/pm2

输出类型并找到PID /usr/local/lib/node_modules/pm2/bin/pm2 处理。

到目前为止我有

PROCESS_ID=$(ps -elf | grep pm2 | grep -v grep | awk 'FNR<2{print $4}')

但这只是第一行的PID。无法保证正确的PID将是什么行,因为新贵程序有时会显示这个grep的2-3个结果。我需要一种方法来过滤哪个行读取到awk我猜,因为所需的行只会一次只有一个。任何帮助赞赏


1
抬头 pgrep 命令 - 它应该更简单(单个命令)
Marek Rost

Answers:


1

看一眼 pgrep

pgrep -f /usr/local/lib/node_modules/pm2/bin/pm2

0

可以通过使用/ regex /启动表达式来过滤awk

我变了

ps -elf | grep pm2 | grep -v grep | awk 'FNR<2{print $4}'

ps -elf | grep pm2 | grep -v grep | awk '/node_modules/FNR<2{print $4}'

它起作用了。您还可以通过转义斜杠来搜索更长的路径:

ps -elf | grep pm2 | grep -v grep | awk '/\/lib\/node_modules/FNR<2{print $4}'

也有效

像awk一样可怕这篇文章很容易 http://www.tecmint.com/use-linux-awk-command-to-filter-text-string-in-files/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.