Вырезать каждую 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] 
  • Как изменить конкретный столбец с помощью sed или awk на основе определенного шаблона
  • Как присоединиться к двум csv с таким же количеством строк
  • Преобразование таблицы csv в HTML
  • Grep регулярное выражение для отображения только серийных номеров (определенной длины, содержащих альфа и цифру) в файле CSV
  • Возможно ли напечатать повторяющийся диапазон аргументов через cli из csv? (см. пример)
  • Разбор csv с использованием awk
  • Удалить конкретный столбец, если он существует в файле CSV
  • Как заменить запятые на пробелы в csv, но вставляя другое количество пробелов после каждого столбца?
  • объединить два файла csv на основе условия
  • Есть ли способ сортировать grep-вывод csv-файла?
  • Преобразование столбца с использованием даты и добавление в файл csv
  • Linux и Unix - лучшая ОС в мире.