我正在尝试从csv文件中删除一列(我从预处理中获取此列作为变量)。
我查看了提供的示例并尝试了以下
cut -d ',' -f 2 X.csv > Y.csv
上述命令无济于事-X.csv的第二列复制到Y.csv
我希望将第二列和定界符一起删除
例如:
name,place,animal
a,chicago,python
b,new york,squirrel
使用cut命令后,文件应该看起来像
name,animal
a,python
b,squirrel
答案 0 :(得分:3)
您可能要使用csvkit中的csvcut
https://csvkit.readthedocs.io/en/1.0.3/scripts/csvcut.html
-C
提供了您正在寻找的功能
-C NOT_COLUMNS, --not-columns NOT_COLUMNS
A comma separated list of column indices, names or
ranges to be excluded, e.g. "1,id,3-5". Defaults to no
columns.
答案 1 :(得分:2)
选择要存储的存储卡,而不是选择要存储的存储卡!
cut -d ',' -f 1,3- X.csv > Y.csv
无论如何,如果您希望删除一列而不是保留其他列(相同的观点,不同的观点),则也可以使用补码标志:
cut -d ',' -f 2 --complement X.csv > Y.csv
答案 2 :(得分:1)
man cut
:
--complement
complement the set of selected bytes, characters or fields
让我们尝试一下:
$ cut -d , -f 2 --complement file
name,animal
a,python
b,squirrel
答案 3 :(得分:0)
许多语言附带CSV解析模块。我喜欢红宝石的单线:
ruby -rcsv -e '
CSV.foreach(ARGV.shift) do |row|
row.delete_at 1 # "1" is the 2nd field due to 0-based array indexing.
puts row.to_csv
end
' file.csv
或者,如果您喜欢单线衬套
ruby -rcsv -e 'CSV.foreach(ARGV.shift) {|row| row.delete_at 1; puts row.to_csv}' file.csv