Удаление столбца с вырезанным или awk из файла в unix - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть следующий файл в unix:

1098000000199400000099400000010110000000000007000+00000000000001400000032
2010199434117300000017300000010110000000000007000+00000000000000400000009
1010199434117300000017300000010110000000000007000+00000000000000400000009

Мне нужно удалить столбец, который имеет "+" в позиции 50, используя команду awk или cut. Я пытался использовать что-то вроде приведенного ниже кода, но он обрабатывает это как поля, мне нужно обрабатывать это как столбцы:

awk '{ $50 = ""; print>"new.txt" }' file.txt

Ответы [ 2 ]

1 голос
/ 08 февраля 2020

Вы хотите столбцы с 1 по 49 и все, что выше 50:

cut -c1-49,51- file.txt
0 голосов
/ 08 февраля 2020

Хотя ответ @Walter A идеален, я дам другой метод, который медленнее, но более широко применим:

Откройте входной файл с помощью vim:

vim input.txt

You буду в "нормальном режиме". Go в столбец 50, набрав 50|.

Затем нажмите Ctrl + V , и вы войдете в «режим выбора блока».

Затем вы можете перемещаться с помощью стрелок, чтобы отметить столбец или блок из нескольких столбцов (на самом деле любой квадрат текста), а затем нажмите d , чтобы удалить этот блок.

Это позволяет вам по существу редактировать столбец оптом, в интерактивном режиме. Он также позволяет выполнять другие операции помимо удаления, например копирование в буфер обмена (используя "+ y вместо d ).

...