Bash awk仅在X时间后打印结果

Bash awk仅在X时间后打印结果,bash,awk,Bash,Awk,我正在尝试制作一个脚本,用于打印脚本启动后启动的过程 剧本 a=$(date +"%T") while true do b=$(ps -eo pid,lstart,cmd | awk '{print $1,$5,$7}') log=$(awk -v A=$a '{ for (i=A; i<=NF; i++) } ' <<< $b) echo $b sleep 2 clear

我正在尝试制作一个脚本,用于打印脚本启动后启动的过程

剧本

a=$(date +"%T")
while true
    do
        b=$(ps -eo pid,lstart,cmd | awk '{print $1,$5,$7}')
        log=$(awk -v A=$a '{ for (i=A; i<=NF; i++)  } ' <<< $b)
        echo $b
        sleep 2
        clear
    done

因为这些是脚本生成脚本后唯一正在运行的过程

time=$(date +"%T")
date=$(date +"%e")
while true
    do
        b=$(ps -eo pid,lstart,cmd | awk -v A="$time" -v B="$date" '{ if ( A <= $5 && B <= $4 ) print $1,$4,$5,$7;}')
        echo "$b"
        sleep 2
        clear
    done

双引号中可能包含空格的变量为什么要调用awk两次,一次填充
b
,然后使用
b
填充
log
?只需将
ps
输出传输到1 awk脚本。你是对的,只是太模糊而无法更改,因为一开始我就是这样做的
10969 6 13:02:19 /usr/bin/python3
10979 6 13:02:23 bash
10980 6 13:02:23 ps
10981 6 13:02:23 awk
time=$(date +"%T")
date=$(date +"%e")
while true
    do
        b=$(ps -eo pid,lstart,cmd | awk -v A="$time" -v B="$date" '{ if ( A <= $5 && B <= $4 ) print $1,$4,$5,$7;}')
        echo "$b"
        sleep 2
        clear
    done
10969 6 13:02:19 /usr/bin/python3
10979 6 13:02:23 bash
10980 6 13:02:23 ps
10981 6 13:02:23 awk