在命令行中使用awk将列添加到csv的末尾

问题描述

我已经下载了以下CSV文件https://www.nhsbsa.nhs.uk/sites/default/files/2020-05/Dispensing%20Data%20Jan%2020%20-%20CSV.csv

,并尝试在每行的末尾添加一列,其值为“ null”。

我尝试使用此awk命令: awk 'BEGIN{FS=OFS=","}{print $0 OFS "null"}' ogfile.csv > newfile.csv

但它似乎是在每行之后添加一个新行,第二列的字段为“ null”

new rows instead of new column

有人可以帮助我了解为什么会这样吗?

解决方法

您的源文件具有DOS / Windows行尾。当看到异常输出时,这是检查的好项目。两种解决方案:

  1. 使用dos2unix之类的实用程序从输入文件中删除不需要的\r字符。 dos2unix适用于大多数发行版。

  1. 修改您的awk命令以识别并删除有问题的字符:

    awk 'BEGIN{RS="\r\n"; FS=OFS=","}{print $0 OFS "null"}' ogfile.csv