首页 > 解决方案 > 如果第一个单元格的值满足条件,如何从 CSV 中删除一行?

问题描述

我有一个包含时间和任务的 CSV 文件:

0800,take out trash
1000,read a book
1230,have lunch
1300,buy groceries
1600,meet with friends
2000,go to sleep

我想创建一个脚本,在运行时,它将当前时间与第一个字段中的时间进行比较。如果现在时间大于此字段,则应删除该行。

我不知道从哪里开始,而且我不是一个程序员。

标签: linuxbashcsv

解决方案


这将完成这项工作

#!/usr/bin/env bash

date=$(date +%H%M)

while read line; do
    if [ $(echo $line | cut -d ',' -f1) -gt $date ]; then
        echo $line
    fi
done < $1

测试:

$ cat foo 
10,a
20,b
2010,b
2020,b
2110,b
$ date
Di  5 Feb 2019 20:18:46 CET
$ ./script.sh foo 
2020,b
2110,b

但是你必须稍微改进一下 bashscript,让它更健壮!我的代码是“概念证明”


推荐阅读