Bash - Linux - 在一行中找到匹配并打印到SED / Awk / Grep行的末尾

时间:2018-03-08 19:23:18

标签: bash awk sed grep

我执行ps -ef命令,并且我将几个参数传递给正在运行的命令。我想只打印hostname \ process1之后的进程名称。我不能使用awk命令和-f来分解线路; ps命令输出不同,它不实用。所以也许我可以使用一个sed命令?

示例输入

/bin/ksh /var/tmp/xxx -bin -tin /tet/1/3/5/host1/bin/x1.sh
/bin/ksh /var/tmp/xyz -bin -tin /tet/1/3/5/host2/bin/y2.sh
/bin/ksh /var/tmp/ttt -bin -tin /tet/1/3/5/host3/bin/z3.sh

输出应该如下所示

host1 x1.sh
host1 y2.sh
host1 z3.sh

提前感谢你

2 个答案:

答案 0 :(得分:1)

awk -F/ '{print $(NF-2), $NF}'

为您提供所需的输出。

答案 1 :(得分:0)

sed 替代方法:

sed -E 's:.*/([^/]+)/[^/]+/([^/]+)$:\1 \2:' file

输出:

host1 x1.sh
host2 y2.sh
host3 z3.sh