Вырезать каждую 100-ю колонку из csv

У меня есть файл данных чисел, разделенных вкладками, например

1 2 3 4 2 4 6 8 

Мой реальный файл имеет ширину 50000, и мне нужен только каждый 100-й столбец (столбец 100, 200, 300, 400, …). Теперь я хотел бы удалить все остальные столбцы.

Как я могу это сделать?

2 Solutions collect form web for “Вырезать каждую 100-ю колонку из csv”

Это то, что awk для:

 awk '{for(i=100;i<=NF;i+=100){printf "%s ",$i;} print ""}' file > output 

Или, если вы можете иметь пробелы внутри своих полей, укажите вкладку в качестве разделителя полей:

 awk -F'\t' '{for(i=100;i<=NF;i+=100){printf "%s ",$i;} print ""}' file > output 

Кроме того, вы можете использовать Perl:

 perl -ane 'for($i=99;$i<=$#F;$i+=100){print "$F[$i] "}' file > output 

Чтобы сделать это для нескольких файлов, вы можете использовать цикл оболочки (при условии, что вы хотите запустить его для всех файлов в текущем каталоге):

 for f in *; do awk '{for(i=100;i<=NF;i+=100){printf "%s ",$i;} print ""}' "$f" > "$f".new; done 

Хотя я не знаю, присвоено ли это большими файлами, вы можете сделать это с помощью cut :

 cut -d " " -f -100 < [your file] 
  • Сценарий для получения данных из файла csv и выполнения связанных операций в базе данных
  • Как переименовать файлы с sed и csv
  • Разделение CSV с многострочными ячейками
  • Команда unix для усечения каждой строки файла
  • Мне нужны данные из файла csv, которого нет во втором файле csv
  • Сравните два файла с четырьмя столбцами
  • Как объединить первые две строки CSV столбец за столбцом?
  • Как я могу преобразовать этот файл excel, чтобы он был не только одной строкой?
  • Эффективный фильтр для файлов .sql с помощью только «INSERT INTO»
  • awk проверить и распечатать, когда это правда
  • изменять ненулевые заполненные часы и минуты в 24 часа
  • Linux и Unix - лучшая ОС в мире.