【问题标题】:Print CSV rows only if particular column is not empty仅当特定列不为空时才打印 CSV 行
【发布时间】:2020-09-02 09:10:36
【问题描述】:

我正在尝试访问较大的 csv 文件,如果特定列为空,我会尝试将该行放入其他其他 csv 以进行进一步处理。我已经编写了一段代码来处理相同的问题,但问题是一列有大量数据和间距,因此我的代码将该列作为单独的行。

IFS=$'\n'
for line in `cat file.csv`; do
    echo "Processing for $line"
    res=`echo $line | cut -d ',' -f2`
    if [ '$res' != '0' ];then
        echo $line >> results.xlsx
    fi
done

【问题讨论】:

  • 而xlsx不是文本格式;将 csv 文本附加到该类型的文件只会损坏它
  • 最后,shellcheck 是你的朋友。在编写和调试脚本时,始终通过它定期运行脚本。

标签: shell csv


【解决方案1】:

我会使用 awk。首先是一些数据:

$ cat assumed_data
1,2
3,
4,5

awk:

$ awk -F, '$2==""' assumed_data

输出:

3,

还有一些解释:

  • awk 使用 awk 完成工作
  • -F, 将输入字段分隔符 (FS) 设置为逗号
  • '$2==""' 条件:如果第二个字段为空,则执行动作,默认动作是输出当前记录
  • assumed_data要处理的文件

【讨论】:

    猜你喜欢
    • 2021-05-04
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 2022-10-04
    • 2022-06-29
    • 1970-01-01
    • 2013-08-31
    • 2017-03-20
    相关资源
    最近更新 更多