我们需要过滤超过4天的lpstat -o输出。我们需要使用shell脚本或awk命令来完成此操作。如果您能帮助我们,我们将非常感谢。
示例当前日期是12月8日,我们使用lpstat -o命令得到以下输出。
XXXX-CB05-2513315 xyzadm 5120 Sun 01 Dec 2022 12:23:22 AM UTC
YYYY-AR19-2519281 xyxadm 2048 Wed 02 Dec 2022 09:38:26 AM UTC
YYYY-BC19-2519281 xyxadm 2048 Wed 04 Dec 2022 09:38:26 AM UTC
ZZZZ-PU05-2520131 xyzadm 2048 Wed 07 Dec 2022 02:19:40 PM UTC
我们需要最终输出
XXXX-CB05-2513315
YYYY-AR19-2519281
YYYY-BC19-2519281
Ravi Pandey敬上
我们尝试使用awk
,我们能够过滤打印机名称,我们需要比较日期和过滤输出的逻辑。
1条答案
按热度按时间fae0ux8s1#
我将利用GNU
AWK
来完成以下任务,让command
的输出为然后
给出(今天)输出
说明:在
BEGIN
中,我创建了一个数组months
,我填充了这个数组,这样我就可以用它来将字母形式的月份转换为数字形式的月份,并计算截止值--或者计算第4天前的日期,我利用Time Functions,从纪元开始算起,取当前时间(以秒为单位),然后从中减去345600,由于4天= 345600秒(4*24*60*60
),我将日期标准化为YYYYMMDD日期-使用strftime
(在BEGIN
中)并获取和处理列(对于每一行)。注意到格式日期的选择是选择(而不是心血来潮),因为在YYYYMMDD中,单位从最大到最小排序:year,month,day,因此它们可以作为给出预期结果的字符串数进行比较。对于day等于或小于(即,相同或早于)cutoff
的每一行,第一列($1
)。