2016-12-24 4 views
-1

У меня есть текстовый файл, разделенный вкладкой. Некоторые строки имеют 10 столбцов, а некоторые строки имеют 11 столбцов. Я хочу добавить дополнительный столбец в последнюю из 10 строк столбца со значением 0. Как я могу это сделать?Как добавить к строкам с меньшим количеством столбцов в текстовом файле с разделителями вкладок?

ответ

2

Поскольку вы упомянули Append, вы можете awk ниже

awk -F $'\t' 'BEGIN {OFS = FS} NF==10{$0=$0"0"}1' input-file 

-F $'\t' ухаживает части закладок разделения, BEGIN {OFS = FS} для установки разделения полого вывода.

NF==10 выглядит только для линий, имеющих только 10 записей, и {$0=$0"0"}1 для восстановления этой линии с добавленным добавленным словом.

Для записи в отдельный файл с помощью оператора > перенаправлять в

awk -F $'\t' 'BEGIN {OFS = FS} NF==10{$0=$0"0"}1' input-file > output-file 

Чтобы заменить оригинальное использование файловой mv

awk -F $'\t' 'BEGIN {OFS = FS} NF==10{$0=$0"0"}1' input-file > output-file ; mv output-file input-file 

Или если у вас есть последняя GNU Awk4.1.0 отпущена), его имеет возможность редактирования файла «inplace»:

gawk -i inplace -F $'\t' 'BEGIN {OFS = FS} NF==10{$0=$0"0"}1' input-file 
+0

Если я запустил эту команду, он изменит файл? Или я должен сохранить вывод этой команды? Поскольку, когда я точно вставляю эту команду, он начал отображать содержимое в bash –

+0

@RaminZahedi: см. Мое обновление, в котором говорится, как сохранить новый файл – Inian

+0

На самом деле я не хочу сохранять в новый файл, я хочу изменить этот файл. если первая команда только модифицирует входной файл, почему он выводит содержимое в оболочку? –

0

Это может работать для вас (GNU СЭД):

sed -r 's/[^\t]+/&/11;t;s/$/\t0/' file 

Это заменяет одиннадцатый столбец с itsself в противном случае она добавляет вкладку, а затем 0.

 Смежные вопросы

  • Нет связанных вопросов^_^