Удалить столбец из текстового файла

saveliev_a

Привет. Есть у меня файл с кучей строк. В каждой строке поля разделены табом. Нужно удалить некоторые из полей. Пока нашел простое решение: скопировать текст в OpenOffice, удалить столбцы и вставить обратно. В идеале хотелось бы воспользоваться какой-нить консольной утилитой, чтобы можно было 1 раз батник написать и ему уже кормить файлы. Куда копать, awk, sed?
Ось — винда.

Marinavo_0507

если строго одним табом, то программа называется cut

saveliev_a

Спасибо! Как ее пропустил при просмотре CoreUtils, не понимаю.

elenangel

если количество полей в каждой строке одно и то же можно воспользоваться awk, допустим, надо из 7 полей удалить 3 и 6:

cat file|awk '{print $1 " " $2 " " $4 " " $5 " " $7}'>newfile

saveliev_a

Спасибо, но решение с cut элегантнее.

apl13

если количество полей в каждой строке одно и то же можно воспользоваться awk, допустим, надо из 7 полей удалить 3 и 6:
А если количество полей все же разное, то все равно можно воспользоваться awk:
awk '{$3 = $6 = ""; gsub("[[:space:]][[:space:]]\+", " "); print}'

И да, не
awk '{print $1 " "  $2 " " $4 " " $5 " " $7}'
, ибо это пиздец, а
awk 'BEGIN {OFS = " "} {print $1, $2, $4, $5, $7}'
, причем экшен при паттерне BEGIN реально нужен только если в системе где-то в настройках awk записан другой OFS.

saveliev_a

Если табом разделены, то не логичнее ли будет

awk 'BEGIN {OFS = "\t"} {print $1, $2, $4, $5, $7}'
Оставить комментарий
Имя или ник:
Комментарий: