我需要切割第5列和第5列。几百个文件中的6个

时间:2017-02-09 19:15:02

标签: file unix awk sed cut

我有多个CSV文件。我需要从中删除第5列和第6列。示例file.csv

column1,column2,column3,mm/dd/yyyy,column5,column6,column7,...,column52

我已经搜索过,似乎没有什么比这应该简单。我希望有一个sed解决方案,因此它会更新每个文件。我不会重命名他们将保持相同的文件,除了剪切文件现在将消失。

3 个答案:

答案 0 :(得分:3)

您可以在循环中使用cut,假设您的所有文件至少有7列:

for file in *.csv; do
  cut -f1-4,7- -d, "$file" > "$file".reduced
  # move reduced file to original once tested
  # mv "$file".reduced "$file"
done
  • -f1-4,7- =>获得字段1-4,然后7开始(基本上,删除5& 6)

答案 1 :(得分:1)

使用GNU sed:

 sed 's/,[^,]*//4;s/,[^,]*//4' file

添加-i标志以编辑文件:

sed -i 's/,[^,]*//4;s/,[^,]*//4' file

或更短:

sed 's/\([^,]*,\)\{2\}//3' file

答案 2 :(得分:0)

perl -p -i -e '{if(/(.*),(.*),(.*),(.*),.*,.*,(.*)/) {print "$1,$2,$3,$4,$5\n"}}' file.csv

这将在删除第5列和第6列后直接更新文件。